TrendGuard Pullback Trader Indicators [Quantigenics]The 'TrendGuard Pullback Trader Indicators' offers a synergistic representation of Trend Wave, Trend Pulse, and Trend Strength, each interrelated to provide intuitive and comprehensive market analysis—combining momentum, trend fluctuation insights, and trend strength in one cohesive tool.
The "TrendGuard Pullback Trader Indicators " utilize a novel approach in market trend analysis, distinctly combining multiple Exponential Moving Averages (EMA) layers for enhanced momentum tracking. This script employs a triple-layered EMA system for the Trend Wave component, adeptly filtering market noise and providing a refined view of underlying momentum. In parallel, the Trend Pulse feature contrasts current prices against a double-EMA of modified averages, offering granular insights into short-term market dynamics. This synergy is further enriched by the Trend Strength Identifier, which leverages the differential between fast and slow EMAs. This element is key in distinguishing significant market trends from minor fluctuations, thus offering a comprehensive gauge of market sentiment. These components, while advanced in their individual functionalities, are integrated to provide a holistic market analysis tool, far surpassing the capabilities of standard trend-following indicators. This sophisticated integration, underpinned by complex mathematical modeling, ensures that the "TrendGuard Pullback Indicators" script is not just a collection of indicators but a refined, cohesive system for strategic trading.
Integrated Analysis System: Trend Wave, Trend Pulse, and Trend Strength Identifier:
Trend Wave : Advanced Momentum Analysis
Calculation : Implements an advanced smoothing technique using a triple-layered Exponential Moving Average (EMA). This complex approach reduces market noise by refining the momentum tracking algorithm, thereby enhancing trend line smoothness.
Output : The output is visualized as a color-changing histogram, pivoting from green to red to indicate bullish and bearish momentum. This histogram is based on a scaled and adjusted Trend Wave value, providing a nuanced understanding of market momentum shifts.
Trend Pulse : Precision in Short-term Market Dynamics
Design : Contrasts a unique combination of high and low prices with their double EMA, diverging from standard closing price analysis. This results in a dynamic indicator sensitive to immediate market shifts.
Function : Acts as a vital complement to Trend Wave, offering fine-grained insights into short-term market behavior. It enhances the overall system by adding depth to the trend context set by the Trend Wave
Trend Strength Identifier: In-Depth Trend Viability Assessment Mechanism
Mechanism : Utilizes a sophisticated differential EMA strategy, comparing fast and slow EMA outputs. The script’s complexity extends beyond basic EMA differences, incorporating advanced trend/noise ratio calculations and trend quality assessments.
Indicator Dynamics : Generates a histogram that colors and positions itself based on the strength and direction of market trends, further informed by calculated trend quality metrics. It crucially differentiates between major trends and minor market noise.
System Synergy :
The three components are designed to operate in unison, forming an integrated trading system. Their interrelation is not merely additive but synergistic, where each element informs and enhances the others, making them indispensable to one another.
This interconnected functionality blends the indicators, as each component is tailored to contribute to a unified decision-making process, rather than functioning as standalone entities. The system's unique construction and its reliance on the interplay between its components underscore its distinctiveness and necessity for combined usage.
How to Trade with the "TrendGuard Pullback Trader Indicators"
Integration with "TrendGuard Pullback Signals" script :
The "TrendGuard Pullback Trader Indicators" script is an integral part of the "TrendGuard Pullback Trader" system, designed to operate in tandem with the "TrendGuard Pullback Trader Signals" script. This script amalgamates three sophisticated indicators, each contributing a unique perspective to market analysis.
This script, while useful as a standalone trading method, is one part of a two-part system. The “TrendGuard Pullback Trader Signals” script can be found below:
Integrated Trend Analysis: Aligning Wave, Pulse, and Strength :
Trend Wave & Trend Pulse Alignment : Look for moments when both the Trend Wave and Trend Pulse indicate a similar direction (both turning green for bullish or red for bearish). This alignment often marks the beginning of a new primary trend.
Confirmation with Trend Strength : Ensure that the Trend Strength histogram supports the new trend. A rising histogram above the lower threshold (white line) indicates growing trend strength.
Assessing Trend Strength and Potential Exhaustion :
Monitoring Threshold Lines : The upper (blue) and lower (white) threshold lines are crucial. When the Trend Strength histogram crosses these lines, it signals significant market conditions:
Above the Upper Threshold (Blue Line): Indicates a very strong trend but be cautious of potential trend exhaustion. A peak above this line may signal that the trend is overstretched.
Below the Lower Threshold (White Line): Suggests a weak or emerging trend, potentially signaling a trend reversal or consolidation phase.
Determining Trending or Ranging Market :
Above Lower Threshold : If the Trend Strength histogram consistently stays above the lower threshold, it suggests a trending market. Use this phase for trend-following strategies.
Below Lower Threshold : When the histogram frequently falls below this line, it may indicate a ranging or choppy market. In such conditions, consider adopting range-bound strategies or tightening stop losses.
Practical Application :
Entry Points : Trades can be initiated when there’s an alignment in Trend Wave and Pulse, coupled with supportive readings in Trend Strength. For instance, long positions during a green Trend Wave and Pulse, with the Trend Strength histogram rising above the lower threshold and vice versa for short entries.
Exit Points and Profit Taking : Consider exiting or taking profits when the Trend Strength crosses above the upper threshold, indicating potential trend exhaustion, especially if the trend strength histogram suddenly drops. Also, look for changes in the Trend Wave and Pulse for additional exit signals.
Alerts Setup : Utilize the provided alert features for key changes in the indicators, especially when the Trend Strength crosses threshold lines, to stay updated on significant market shifts.
Interpreting Indicator Interactions :
Refer to the accompanying images for visual examples of how these indicators interact and signal various market conditions. Understanding their synergy will enhance your ability to recognize key market phases and adjust your trading strategy accordingly.
The "TrendGuard Pullback Trader Indicators" script is intricately designed to be used in conjunction with the "TrendGuard Pullback Trader Signals" script, offering a cohesive and comprehensive trading strategy. Use both scripts together for a more robust trading method.
Adjustable Input Parameters
Each component in the script features customizable settings, designed to offer traders comprehensive control over the indicators. This flexibility allows for tailoring to specific trading styles, market conditions, and time frames. With options for adjusting visibility, selecting price types, modifying calculation lengths, and setting thresholds, these parameters ensure that the tool can be fine-tuned for a high degree of customization and precision, making it adaptable and effective for nearly all markets/symbols and time frames.
Important Usage Guidance: For seamless integration with its counterpart, the "TrendGuard Pullback Trader Signals" script, it's crucial to align the input parameter settings across both scripts. When adjusting values from their defaults, ensure that corresponding parameters in both scripts are identically set. This synchronization is key to achieving a cohesive and accurate representation on your charts.
Show Indicator Name (ShowName):
This parameter controls the display of the indicator's name on the chart. When enabled (`true`), it visually labels the indicator for ease of identification. Disabling (`false`) this feature offers a cleaner visual by removing the label.
Show Trend Wave Indicator (ShowTrendWave):
Activates or deactivates the Trend Wave indicator. When active (`true`), it displays a histogram based on the triple-layered exponential moving average (EMA) of the selected price type, providing a visual representation of market momentum trends. Deactivating (`false`) simplifies the chart by removing this histogram.
Trend Wave Price (TrendWavePrice):
Specifies the price data (close, open, high, low) used in calculating the Trend Wave. This choice affects how the Trend Wave responds to market movements, with each price type offering a different perspective on market momentum.
Trend Wave Length (TrendWaveLength):
Determines the overall calculation period for the triple-layered EMA in the Trend Wave, influencing its sensitivity. A higher value leads to a smoother, less volatile wave, focusing on longer-term market trends, whereas a lower value makes it more responsive to recent price actions.
Show Trend Pulse Indicator (ShowTrendPulse):
This parameter toggles the display of the Trend Pulse indicator, which analyzes the divergence between the current closing price and a double-EMA of a modified price average, providing insight into immediate market dynamics. Enabling (`true`) it adds this analysis to the chart, while disabling (`false`) removes it for focus on other trends.
Trend Pulse Length (TrendPulseLength):
Sets the length for the main double-EMA calculation in the Trend Pulse. A higher number smoothens the indicator, reducing sensitivity to minor price changes and highlighting more significant short-term trends.
Show Trend Strength Indicator (ShowTrendStrength):
Controls whether the Trend Strength indicator is displayed. This indicator uses a differential approach between fast and slow EMAs to assess the market's trend strength. Enabling it (`true`) provides a histogram view of the trend’s robustness, whereas disabling (`false`) omits this analysis.
Fast Average Length (FastAvgLen):
Specifies the period for the fast EMA in the Trend Strength indicator. Shorter periods make the EMA more sensitive to recent price changes, ideal for identifying new trend formations.
Slow Average Length (SlowAvgLen):
Determines the period for the slow EMA in the Trend Strength indicator. A longer period smoothens the EMA, useful for identifying sustained trend directions.
Threshold High (ThresholdHi):
This value sets a high threshold for the Trend Strength indicator. Values exceeding this threshold indicate a strong and established market trend, which can be critical for strategies focusing on trend continuity.
Threshold Low (ThresholdLow):
Defines a low threshold for the Trend Strength indicator. Values below this threshold suggest weak or emerging trends, signaling potential trend reversals or consolidations.
Threshold Trend (ThreshTrend):
Establishes a specific threshold within the Trend Strength indicator for identifying significant trends. Exceeding this threshold often suggests a trend with potential trading relevance.
Enable Threshold Low (ThresholdLowOnOff):
This option enables or disables the low threshold in the Trend Strength calculation. It allows traders to customize the indicator’s sensitivity to weaker trends.
Average Line (AvgLine):
Adjusts the period for an additional EMA line in the Trend Strength indicator. This line acts as a smoothing reference for the Trend Strength. This can also act as a threshold reference as when its below the ‘Threshold Low’ line this could identify sideways/choppy conditions.
Conclusion:
The "TrendGuard Pullback Trader Indicators" script provides a multidimensional analysis platform, combining in-depth momentum tracking, immediate market movement insights, and robust trend evaluation.
Remember, trading involves risk, and past performance is not indicative of future results.
You can see the “Author’s instructions" below to get immediate access to TrendGuard Pullback Trader Indicators & the rest of the “Quantigenics Premium Indicator Suite”.
חפש סקריפטים עבור "the script"
VisibleChart█ OVERVIEW
This library is a Pine programmer’s tool containing functions that return values calculated from the range of visible bars on the chart.
This is now possible in Pine Script™ thanks to the recently-released chart.left_visible_bar_time and chart.right_visible_bar_time built-ins, which return the opening time of the leftmost and rightmost bars on the chart. These values update as traders scroll or zoom their charts, which gives way to a class of indicators that can dynamically recalculate and draw visuals on visible bars only, as users scroll or zoom their charts. We hope this library's functions help you make the most of the world of possibilities these new built-ins provide for Pine scripts.
For an example of a script using this library, have a look at the Chart VWAP indicator.
█ CONCEPTS
Chart properties
The new chart.left_visible_bar_time and chart.right_visible_bar_time variables return the opening time of the leftmost and rightmost bars on the chart. They are only two of many new built-ins in the `chart.*` namespace. See this blog post for more information, or look them up by typing "chart." in the Pine Script™ Reference Manual .
Dynamic recalculation of scripts on visible bars
Any script using chart.left_visible_bar_time or chart.right_visible_bar_time acquires a unique property, which triggers its recalculation when traders scroll or zoom their charts in such a way that the range of visible bars on the chart changes. This library's functions use the two recent built-ins to derive various values from the range of visible bars.
Designing your scripts for dynamic recalculation
For the library's functions to work correctly, they must be called on every bar. For reliable results, assign their results to global variables and then use the variables locally where needed — not the raw function calls.
Some functions like `barIsVisible()` or `open()` will return a value starting on the leftmost visible bar. Others such as `high()` or `low()` will also return a value starting on the leftmost visible bar, but their correct value can only be known on the rightmost visible bar, after all visible bars have been analyzed by the script.
You can plot values as the script executes on visible bars, but efficient code will, when possible, create resource-intensive labels, lines or tables only once in the global scope using var , and then use the setter functions to modify their properties on the last bar only. The example code included in this library uses this method.
Keep in mind that when your script uses chart.left_visible_bar_time or chart.right_visible_bar_time , your script will recalculate on all bars each time the user scrolls or zooms their chart. To provide script users with the best experience you should strive to keep calculations to a minimum and use efficient code so that traders are not always waiting for your script to recalculate every time they scroll or zoom their chart.
Another aspect to consider is the fact that the rightmost visible bar will not always be the last bar in the dataset. When script users scroll back in time, a large portion of the time series the script calculates on may be situated after the rightmost visible bar. We can never assume the rightmost visible bar is also the last bar of the time series. Use `barIsVisible()` to restrict calculations to visible bars, but also consider that your script can continue to execute past them.
Look first. Then leap.
█ FUNCTIONS
The library contains the following functions:
barIsVisible()
Condition to determine if a given bar is within the users visible time range.
Returns: (bool) True if the the calling bar is between the `chart.left_visible_bar_time` and the `chart.right_visible_bar_time`.
high()
Determines the value of the highest `high` in visible bars.
Returns: (float) The maximum high value of visible chart bars.
highBarIndex()
Determines the `bar_index` of the highest `high` in visible bars.
Returns: (int) The `bar_index` of the `high()`.
highBarTime()
Determines the bar time of the highest `high` in visible bars.
Returns: (int) The `time` of the `high()`.
low()
Determines the value of the lowest `low` in visible bars.
Returns: (float) The minimum low value of visible chart bars.
lowBarIndex()
Determines the `bar_index` of the lowest `low` in visible bars.
Returns: (int) The `bar_index` of the `low()`.
lowBarTime()
Determines the bar time of the lowest `low` in visible bars.
Returns: (int) The `time` of the `low()`.
open()
Determines the value of the opening price in the visible chart time range.
Returns: (float) The `open` of the leftmost visible chart bar.
close()
Determines the value of the closing price in the visible chart time range.
Returns: (float) The `close` of the rightmost visible chart bar.
leftBarIndex()
Determines the `bar_index` of the leftmost visible chart bar.
Returns: (int) A `bar_index`.
rightBarIndex()
Determines the `bar_index` of the rightmost visible chart bar.
Returns: (int) A `bar_index`
bars()
Determines the number of visible chart bars.
Returns: (int) The number of bars.
volume()
Determines the sum of volume of all visible chart bars.
Returns: (float) The cumulative sum of volume.
ohlcv()
Determines the open, high, low, close, and volume sum of the visible bar time range.
Returns: ( ) A tuple of the OHLCV values for the visible chart bars. Example: open is chart left, high is the highest visible high, etc.
chartYPct(pct)
Determines a price level as a percentage of the visible bar price range, which depends on the chart's top/bottom margins in "Settings/Appearance".
Parameters:
pct : (series float) Percentage of the visible price range (50 is 50%). Negative values are allowed.
Returns: (float) A price level equal to the `pct` of the price range between the high and low of visible chart bars. Example: 50 is halfway between the visible high and low.
chartXTimePct(pct)
Determines a time as a percentage of the visible bar time range.
Parameters:
pct : (series float) Percentage of the visible time range (50 is 50%). Negative values are allowed.
Returns: (float) A time in UNIX format equal to the `pct` of the time range from the `chart.left_visible_bar_time` to the `chart.right_visible_bar_time`. Example: 50 is halfway from the leftmost visible bar to the rightmost.
chartXIndexPct(pct)
Determines a `bar_index` as a percentage of the visible bar time range.
Parameters:
pct : (series float) Percentage of the visible time range (50 is 50%). Negative values are allowed.
Returns: (float) A time in UNIX format equal to the `pct` of the time range from the `chart.left_visible_bar_time` to the `chart.right_visible_bar_time`. Example: 50 is halfway from the leftmost visible bar to the rightmost.
whenVisible(src, whenCond, length)
Creates an array containing the `length` last `src` values where `whenCond` is true for visible chart bars.
Parameters:
src : (series int/float) The source of the values to be included.
whenCond : (series bool) The condition determining which values are included. Optional. The default is `true`.
length : (simple int) The number of last values to return. Optional. The default is all values.
Returns: (float ) The array ID of the accumulated `src` values.
avg(src)
Gathers values of the source over visible chart bars and averages them.
Parameters:
src : (series int/float) The source of the values to be averaged. Optional. Default is `close`.
Returns: (float) A cumulative average of values for the visible time range.
median(src)
Calculates the median of a source over visible chart bars.
Parameters:
src : (series int/float) The source of the values. Optional. Default is `close`.
Returns: (float) The median of the `src` for the visible time range.
vVwap(src)
Calculates a volume-weighted average for visible chart bars.
Parameters:
src : (series int/float) Source used for the VWAP calculation. Optional. Default is `hlc3`.
Returns: (float) The VWAP for the visible time range.
hamster-bot ZZCompilation of various modifications of the trend breakout reversal strategies based on the ZigZag .
Includes past versions of scripts:
version 1 ZZ2 Breakout reversal strategy
version 2 ZZ2 with experimental options hamster-bot ZZ Breakout reversal strategy
version 3 ZZ6 Noro's ZZ-6 by hamster-bot The original script is available here
The original script is available here
Description ZZ6 :
New version of ZZ-strategy.
Repaint?
Normal lines are not redrawn. Dotted lines repaint, but do not affect trading (do not affect backtests). You can turn off repaint in the script settings. Repaint (dotted lines) are needed only for clarity. To make it clear from which bar the level is created.
Levels
Lime lines above - level from a local high bar. To open a long position. Using a market stop order.
Red line at the bottom - the level from a local low bar. To open a short position. Using a market stop order.
Trading
You can trade without short positions. Then the red line is the level for a stop-loss order.
Reverse trading can be used. Without stop-loss orders.
Risk size
Order size depends on the risk size parameter and possible loss. If risk size = 2%, it means that the loss will be no more than 2%.
For crypto
Symbols: XBT/USD, BTC /USD, BTC /USDT, ETH/USD, etc - need USD(T)
Timeframes: 1h, 4h, 1d
This new ZZ strategy includes all the best practices for this strategy. the script has great flexibility of settings.
Instructions for script parameters:
Parameter ZZ Type - is responsible for the basic type of strategy used (usually it is responsible for building levels)
then you will need to configure the settings block corresponding to the selected ZZ type .
At the moment the script contains types: ZZ2 + ZZ6
The rest of the parameters are common for any type of ZZ.
Further development will be done in this script. The above scripts will not be updated.
At the moment the options are already available:
- Take Profit
- Stop Loss
- One entry Long/Short
- Single entry
- Levels offset
- Levels multiplier
- Levels angle
Delta Volume Candles [LucF]█ OVERVIEW
This indicator plots on-chart volume delta information using candles that can replace your normal candles, tops and bottoms appended to normal candles, optional MAs of those tops and bottoms levels, a divergence channel and a chart background. The indicator calculates volume delta using intrabar analysis, meaning that it uses the lower timeframe bars constituting each chart bar.
█ CONCEPTS
Volume Delta
The volume delta concept divides a bar's volume in "up" and "down" volumes. The delta is calculated by subtracting down volume from up volume. Many calculation techniques exist to isolate up and down volume within a bar. The simplest use the polarity of interbar price changes to assign their volume to up or down slots, e.g., On Balance Volume or the Klinger Oscillator . Others such as Chaikin Money Flow use assumptions based on a bar's OHLC values. The most precise calculation method uses tick data and assigns the volume of each tick to the up or down slot depending on whether the transaction occurs at the bid or ask price. While this technique is ideal, it requires huge amounts of data on historical bars, which considerably limits the historical depth of charts and the number of symbols for which tick data is available. Furthermore, historical tick data is not yet available on TradingView.
This indicator uses intrabar analysis to achieve a compromise between the simplest and most precise methods of calculating volume delta. It is currently the most precise method usable on TradingView charts. TradingView's Volume Profile built-in indicators use it, as do the CVD - Cumulative Volume Delta Candles and CVD - Cumulative Volume Delta (Chart) indicators published from the TradingView account . My Delta Volume Channels and Volume Delta Columns Pro indicators also use intrabar analysis. Other volume delta indicators such as my Realtime 5D Profile use realtime chart updates to calculate volume delta without intrabar analysis, but that type of indicator only works in real time; they cannot calculate on historical bars.
This is the logic I use to determine the polarity of intrabars, which determines the up or down slot where its volume is added:
• If the intrabar's open and close values are different, their relative position is used.
• If the intrabar's open and close values are the same, the difference between the intrabar's close and the previous intrabar's close is used.
• As a last resort, when there is no movement during an intrabar, and it closes at the same price as the previous intrabar, the last known polarity is used.
Once all intrabars making up a chart bar have been analyzed and the up or down property of each intrabar's volume determined, the up volumes are added, and the down volumes subtracted. The resulting value is volume delta for that chart bar, which can be used as an estimate of the buying/selling pressure on an instrument. Not all markets have volume information. Without it, this indicator is useless.
Intrabar analysis
Intrabars are chart bars at a lower timeframe than the chart's. The timeframe used to access intrabars determines the number of intrabars accessible for each chart bar. On a 1H chart, each chart bar of an active market will, for example, usually contain 60 bars at the lower timeframe of 1min, provided there was market activity during each minute of the hour.
This indicator automatically calculates an appropriate lower timeframe using the chart's timeframe and the settings you use in the script's "Intrabars" section of the inputs. As it can access lower timeframes as small as seconds when available, the indicator can be used on charts at relatively small timeframes such as 1min, provided the market is active enough to produce bars at second timeframes.
The quantity of intrabars analyzed in each chart bar determines:
• The precision of calculations (more intrabars yield more precise results).
• The chart coverage of calculations (there is a 100K limit to the quantity of intrabars that can be analyzed on any chart,
so the more intrabars you analyze per chart bar, the less chart bars can be calculated by the indicator).
The information box displayed at the bottom right of the chart shows the lower timeframe used for intrabars, as well as the average number of intrabars detected for chart bars and statistics on chart coverage.
Balances
This indicator calculates five balances from volume delta values. The balances are oscillators with a zero centerline; positive values are bullish, and negative values are bearish. It is important to understand the balances as they can be used to:
• Color candle bodies.
• Calculate body and top and bottom divergences.
• Color an EMA channel.
• Color the chart's background.
• Configure markers and alerts.
The five balances are:
1 — Bar Balance : This is the only balance using instant values; it is simply the subtraction of the down volume from the up volume on the bar, so the instant volume delta for that bar.
2 — Average Balance : Calculates a distinct EMA for both the up and down volumes, and subtracts the down EMA from the up EMA.
The result is akin to MACD's histogram because it is the subtraction of two moving averages.
3 — Momentum Balance : Starts by calculating, separately for both up and down volumes, the difference between the same EMAs used in "Average Balance" and
an SMA of twice the period used for the "Average Balance" EMAs. The difference for the up side is subtracted from the difference for the down side,
and an RSI of that value is calculated and brought over the −50/+50 scale.
4 — Relative Balance : The reference values used in the calculation are the up and down EMAs used in the "Average Balance".
From those, we calculate two intermediate values using how much the instant up and down volumes on the bar exceed their respective EMA — but with a twist.
If the bar's up volume does not exceed the EMA of up volume, a zero value is used. The same goes for the down volume with the EMA of down volume.
Once we have our two intermediate values for the up and down volumes exceeding their respective MA, we subtract them. The final value is an ALMA of that subtraction.
The rationale behind using zero values when the bar's up/down volume does not exceed its EMA is to only take into account the more significant volume.
If both instant volume values exceed their MA, then the difference between the two is the signal's value.
The signal is called "relative" because the intermediate values are the difference between the instant up/down volumes and their respective MA.
This balance flatlines when the bar's up/down volumes do not exceed their EMAs, which makes it useful to spot areas where trader interest dwindles, such as consolidations.
The smaller the period of the final value's ALMA, the more easily it will flatline. These flat zones should be considered no-trade zones.
5 — Percent Balance : This balance is the ALMA of the ratio of the "Bar Balance" over the total volume for that bar.
From the balances and marker conditions, two more values are calculated:
1 — Marker Bias : This sums the up/down (+1/‒1) occurrences of the markers 1 to 4 over a period you define, so it ranges from −4 to +4, times the period.
Its calculation will depend on the modes used to calculate markers 3 and 4.
2 — Combined Balances : This is the sum of the bull/bear (+1/−1) states of each of the five balances, so it ranges from −5 to +5.
The periods for all of these balances can be configured in the "Periods" section at the bottom of the script's inputs. As you cannot see the balances on the chart, you can use my Volume Delta Columns Pro indicator in a pane; it can plot the same balances, so you will be able to analyze them.
Divergences
In the context of this indicator, a divergence is any bar where the bear/bull state of a balance (above/below its zero centerline) diverges from the polarity of a chart bar. No directional bias is assigned to divergences when they occur. Candle bodies and tops/bottoms can each be colored differently on divergences detected from distinct balances.
Divergence Channel
The divergence channel is the space between two levels (by default, the bar's open and close ) saved when divergences occur. When price (by default the close ) has breached a channel and a new divergence occurs, a new channel is created. Until that new channel is breached, bars where additional divergences occur will expand the channel's levels if the bar's price points are outside the channel.
Prices breaches of the divergence channel will change its state. Divergence channels can be in one of three different states:
• Bull (green): Price has breached the channel to the upside.
• Bear (red): Price has breached the channel to the downside.
• Neutral (gray): The channel has not yet been breached.
█ HOW TO USE THE INDICATOR
I do not make videos to explain how to use my indicators. I do, however, try hard to include in their description everything one needs to understand what they do. From there, it's up to you to explore and figure out if they can be useful in your trading practice. Communicating in videos what this description and the script's tooltips contain would make for very long videos that would likely exceed the attention span of most people who find this description too long. There is no quick way to understand an indicator such as this one because it uses many different concepts and has quite a bit of settings one can use to modify its visuals and behavior — thus how one uses it. I will happily answer questions on the inner workings of the indicator, but I do not answer questions like "How do I trade using this indicator?" A useful answer to that question would require an in-depth analysis of who you are, your trading methodology and objectives, which I do not have time for. I do not teach trading.
Start by loading the indicator on an active chart containing volume information. See here if you need help.
The default configuration displays:
• Normal candles where the bodies are only colored if the bar's volume has increased since the last bar.
If you want to use this indicator's candles, you may want to disable your chart's candles by clicking the eye icon to the right of the symbol's name in the top left of the chart.
• A top or bottom appended to the normal candles. It represents the difference between up and down volume for that bar
and is positioned at the top or bottom, depending on its polarity. If up volume is greater than down volume, a top is displayed. If down volume is greater, a bottom is plotted.
The size of tops and bottoms is determined by calculating a factor which is the proportion of volume delta over the bar's total volume.
That factor is then used to calculate the top or bottom size relative to a baseline of the average candle body size of the last 100 bars.
• An information box in the bottom right displaying intrabar and chart coverage information.
• A light red background when the intrabar volume differs from the chart's volume by more than 1%.
The script's inputs contain tooltips explaining most of the fields. I will not repeat them here. Following is a brief description of each section of the indicator's inputs which will give you an idea of what the indicator can do:
Normal Candles is where you configure the replacement candles plotted by the script. You can choose from different coloring schemes for their bodies and specify a unique color for bodies where a divergence calculated using the method you choose occurs.
Volume Tops & Botttoms is where you configure the display of tops and bottoms, and their EMAs. The EMAs are calculated from the high point of tops and the low point of bottoms. They can act as a channel to evaluate price, and you can choose to color the channel using a gradient reflecting the advances/declines in the balance of your choice.
Divergence Channel is where you set up the appearance and behavior of the divergence channel. These areas represent levels where price and volume delta information do not converge. They can be interpreted as regions with no clear direction from where one will look for breaches. You can configure the channel to take into account one or both types of divergences you have configured for candle bodies and tops/bottoms.
Background allows you to configure a gradient background color that reflects the advances/declines in the balance of your choice. You can use this to provide context to the volume delta values from bars. You can also control the background color displayed on volume discrepancies between the intrabar and the chart's timeframe.
Intrabars is where you choose the calculation mode determining the lower timeframe used to access intrabars. The indicator uses the chart's timeframe and the type of market you are on to calculate the lower timeframe. Your setting there should reflect which compromise you prefer between the precision of calculations and chart coverage. This is also where you control the display of the information box in the lower right corner of the chart.
Markers allows you to control the plotting of chart markers on different conditions. Their configuration determines when alerts generated from the indicator will fire. Note that in order to generate alerts from this script, they must be created from your chart. See this Help Center page to learn how. Only the last 500 markers will be visible on the chart, but this will not affect the generation of alerts.
Periods is where you configure the periods for the balances and the EMAs used in the indicator.
The raw values calculated by this script can be inspected using the Data Window.
█ INTERPRETATION
Rightly or wrongly, volume delta is considered by many a useful complement to the interpretation of price action. I use it extensively in an attempt to find convergence between my read of volume delta and price movement — not so much as a predictor of future price movement. No system or person can predict the future. Accordingly, I consider people who speak or act as if they know the future with certainty to be dangerous to themselves and others; they are charlatans, imprudent or blissfully ignorant.
I try to avoid elaborate volume delta interpretation schemes involving too many variables and prefer to keep things simple:
• Trends that have more chances of continuing should be accompanied by VD of the same polarity.
In trends, I am looking for "slow and steady". I work from the assumption that traders and systems often overreact, which translates into unproductive volatility.
Wild trends are more susceptible to overreactions.
• I prefer steady VD values over wildly increasing ones, as large VD increases often come with increased price volatility, which can backfire.
Large VD values caused by stopping volume will also often occur on trend reversals with abnormally high candles.
• Prices escaping divergence channels may be leading a trend in that direction, although there is no telling how long that trend will last; could be just a few bars or hundreds.
When price is in a channel, shifts in VD balances can sometimes give us an idea of the direction where price has the most chance of breaking.
• Dwindling VD will often indicate trend exhaustion and predate reversals by many bars, but the problem is that mere pauses in a trend will often produce the same behavior in VD.
I think it is too perilous to infer rigidly from VD decreases.
Divergence Channel
Here I have configured the divergence channels to be visible. First, I set the bodies to display divergences on the default Bar Balance. They are indicated by yellow bodies. Then I activated the divergence channels by choosing to draw levels on body divergences and checked the "Fill" checkbox to fill the channel with the same color as the levels. The divergence channel is best understood as a direction-less area from where a breach can be acted on if other variables converge with the breach's direction:
Tops and Bottoms EMAs
I find these EMAs rather interesting. They have no equivalent elsewhere, as they are calculated from the top and bottom values this indicator plots. The only similarity they have with volume-weighted MAs, including VWAP, is that they use price and volume. This indicator's Tops and Bottoms EMAs, however, use the price and volume delta. While the channel differs from other channels in how it is calculated, it can be used like others, as a baseline from which to evaluate price movement or, alternatively, as stop levels. Remember that you can change the period used for the EMAs in the "Periods" section of the inputs.
This chart shows the EMAs in action, filled with a gradient representing the advances/decline from the Momentum balance. Notice the anomaly in the chart's latest bars where the Momentum balance gradient has been indicating a bullish bias for some time, during which price was mostly below the EMAs. Price has just broken above the channel on positive VD. My interpretation of this situation would be that it is a risky opportunity for a long trade in the larger context where the market has been in a downtrend since the 5th. Intrepid traders choosing to enter here could do so with a "make or break" tight stop that will minimize their losses should the market continue its downtrend while hopefully preserving the potential upside of price continuing on the longer-term uptrend prevalent since the 28th:
█ NOTES
Volume
If you use indicators such as this one which depends on volume information, it is important to realize that the volume data they consume comes from data feeds, and that all data feeds are NOT created equally. Those who create the data feeds we use must make decisions concerning the nature of the transactions they tally and the way they are tallied in each feed, and these decisions affect the nature of our volume data. My Volume X-ray publication discusses some of the reasons why volume information from different timeframes, brokers/exchanges or sectors may vary considerably. I encourage you to read it. This indicator's display of a warning through a background color on volume discrepancies between the timeframe used to access intrabars and the chart's timeframe is an attempt to help you realize these variations in feeds. Don't take things for granted, and understand that the quality of a given feed's volume information affects the quality of the results this indicator calculates.
Markets as ecosystems
I believe it is perilous to think that behavioral patterns you discover in one market through the lens of this or any other indicator will necessarily port to other markets. While this may sometimes be the case, it will often not. Why is that? Because each market is its own ecosystem. As cities do, all markets share some common characteristics, but they also all have their idiosyncrasies. A proportion of a city's inhabitants is always composed of outsiders who come and go, but a core population of regulars and systems is usually the force that actually defines most of the city's observable characteristics. I believe markets work somewhat the same way; they may look the same, but if you live there for a while and pay attention, you will notice the idiosyncrasies. Some things that work in some markets will, accordingly, not work in others. Please keep that in mind when you draw conclusions.
On Up/Down or Buy/Sell Volume
Buying or selling volume are misnomers, as every unit of volume transacted is both bought and sold by two different traders. While this does not keep me from using the terms, there is no such thing as “buy only” or “sell only” volume. Trader lingo is riddled with peculiarities. Without access to order book information, traders work with the assumption that when price moves up during a bar, there was more buying pressure than selling pressure, just as when buy market orders take out limit ask orders in the order book at successively higher levels. The built-in volume indicator available on TradingView uses this logic to color the volume columns green or red. While this script’s calculations are more precise because it analyses intrabars to calculate its information, it uses pretty much the same imperfect logic. Until Pine scripts can have access to how much volume was transacted at the bid/ask prices, our volume delta calculations will remain a mere proxy.
Repainting
• The values calculated on the realtime bar will update as new information comes from the feed.
• Historical values may recalculate if the historical feed is updated or when calculations start from a new point in history.
• Markers and alerts will not repaint as they only occur on a bar's close. Keep this in mind when viewing markers on historical bars,
where one could understandably and incorrectly assume they appear at the bar's open.
To learn more about repainting, see the Pine Script™ User Manual's page on the subject .
Superfluity
In "The Bed of Procrustes", Nassim Nicholas Taleb writes: To bankrupt a fool, give him information . This indicator can display a lot of information. The inevitable adaptation period you will need to figure out how to use it should help you eliminate all the visuals you do not need. The more you eliminate, the easier it will be to focus on those that are the most useful to your trading practice. Don't be a fool.
█ THANKS
Thanks to alexgrover for his Dekidaka-Ashi indicator. His volume plots on candles were the inspiration for my top/bottom plots.
Kudos to PineCoders for their libraries. I use two of them in this script: Time and lower_tf .
The first versions of this script used functionality that I would not have known about were it not for these two guys:
— A guy called Kuan who commented on a Backtest Rookies presentation of their Volume Profile indicator.
— theheirophant , my partner in the exploration of the sometimes weird abysses of request.security() ’s behavior at lower timeframes.
Full Range Trading Strategy with DCA - Crypto, Forex, Stocks
Introduction
This is a Pine 4 range trading strategy. It has a twin study with several alerts. The design intent is to produce a commercial grade signal generator that can be adapted to any symbol and interval. Ideally, the script is reliable enough to be the basis of an automated trading system web-hooked to a server with API access to crypto, forex and stock brokerages. The strategy can be run in three different modes: long, short and bidirectional.
As a range trading strategy, the behavior of the script is to buy on weakness and sell on strength. As such trade orders are placed in a counter direction to price pressure. What you will see on the chart is a short position on peaks and a long position on valleys. Just to be clear, the range as well as trends are merely illusions as the chart only receives prices. However, this script attempts to calculate pivot points from the price stream. Rising pivots are shorts and falling pivots are longs. I refer to pivots as a vertex in this script which adds structural components to the chart formation. When trading in “Ping Pong” mode long and short positions are intermingled continuously as long as there exists a detectable vertex. Unfortunately, this can work against your backtest profitability on long duration trends where prices continue in a single direction without pullback. I have designed various features in the script to compensate for this event. A well configured script should perform in a range bound market and minimize losses in a trend. I also have a trend following version of this script for those not interested in trading the range. Please be aware these are two types of traders. You should know who you are.
This script employs a DCA feature which enables users to experiment with loss recovery techniques. This is an advanced feature which can increase the order size on new trades in response to stopped out or winning streak trades. The script keeps track of debt incurred from losing trades. When the debt is recovered the order size returns to the base amount specified in the TV properties tab. The inputs for this feature include a limiter to prevent your account from depleting capital during runaway markets. This implementation of DCA does not use pyramid levels. Only the order size on subsequent new trades are affected. Pyramids on the other hand increase the size of open positions. If you are interested in seeing pyramids in action please see the trend version of this script which features both DCA and pyramids. While DCA is a popular feature in crypto trading, it can make you a “bag” holder if your not careful. In other markets, especially margin trading, you’ll need a well funded account and much trading experience to manage this feature safely.
Consecutive loss limit can be set to report a breach of the threshold value. Every stop hit beyond this limit will be reported on a version 4 label above the bar where the stop is hit. Use the location of the labels along with the summary report tally to improve the adaptability of system. Don’t simply fit the chart. A good trading system should adapt to ever changing market conditions. On the study version the consecutive loss limit can be used to halt live trading on the broker side (managed manually).
Design
This script uses twelve indicators on a single time frame. The original trading algorithms are a port from a much larger program on another trading platform. I’ve converted some of the statistical functions to use standard indicators available on TradingView. The setups make heavy use of the Hull Moving Average in conjunction with EMAs that form the Bill Williams Alligator as described in his book “New Trading Dimensions” Chapter 3. Lag between the Hull and the EMAs form the basis of the entry and exit points. The vertices are calculated using one of five featured indicators. Each indicator is actually a composite of calculations which produce a distinct mean. This mathematical distinction enables the script to be useful on various instruments which belong to entirely different markets. In other words, at least one of these indicators should be able generate pivots on an arbitrarily selected instrument. Try each one to find the best fit.
The entire script is around 1800 lines of Pine code which is the maximum incidental size given the TradingView limits: local scopes, run-time duration and compile time. I’ve been working on this script for nearly two years and have tested it on various instruments stocks, forex and crypto. It performs well on higher liquidity markets that have at least a year of historical data. Although the script can be implemented on any interval, it has been optimized for small time frames down to 5 minutes. The 10 minute BTC/USD produces around 500 trades in 2 ½ months. The 1 hour BTC/USD produces around 1300 trades in 1 ½ years. Originally, this script contained both range trading and trend following logic but had to be broken into separate scripts due to the aforementioned limitations.
Inputs to the script use cone centric measurements in effort to avoid exposing adjustments to the various internal indicators. The goal was to keep the inputs relevant to the actual trade entry and exit locations as opposed to a series of MA input values and the like. As a result the strategy exposes over 50 inputs grouped into long or short sections. Inputs are available for the usual minimum profit and stop-loss as well as safeguards, trade frequency, DCA, modes, presets, reports and lots of calibrations. The inputs are numerous, I’m aware. Unfortunately, at this time, TradingView does not offer any other method to get data in the script. The usual initialization files such as cnf, cfg, ini, json and xml files are currently unsupported.
Example configurations for various instruments along with a detailed PDF user manual is available.
Indicator Repainting And Anomalies
Indicator repainting is an industry wide problem which mainly occurs when you mix backtest data with real-time data. It doesn't matter which platform you use some form of this condition will manifest itself on your chart over time. The critical aspect being whether live trades on your broker’s account continue to match your TradingView study.
Tackling this repainting issue has been a major project goal of this script. Based on my experience with Pine, most of the problems stem from TradingView’s implementation of multiple interval access. Whereas most platform provide a separate bar series for each interval requested, the Pine language interleaves higher time frames with the primary chart interval. The problem is exacerbated by allowing a look-ahead parameter to the Security function. The goal of my repaint prevention is simply to ensure that my signal trading bias remains consistent between the strategy, study and broker. That being said this is what I’ve done address this issue in this script:
1. This script uses only 1 time frame. The chart interval.
2. Every entry and exit condition is evaluated on closed bars only.
3. No security functions are called to avoid a look-ahead possibility.
4. Every contributing factor specified in the TradingView wiki regarding this issue has been addressed.
5. I’ve run a 10 minute chart live for a week and compared it to the same chart periodically reloaded. The two charts were highly correlated with no instances of completely opposite real-time signals.
The study does indeed bring up the TV warning dialog. The only reason for this is because the script uses an EMA indicator which according to TradingView is due to “peculiarities of the algorithm”.
One issue that comes up when comparing the strategy with the study is that the strategy trades show on the chart one bar later than the study. This problem is due to the fact that “strategy.entry()” and “strategy_exit()” do not execute on the same bar called. The study, on the other hand, has no such limitation since there are no position routines.
Please be aware that the data source matters. Cryptocurrency has no central tick repository so each exchange supplies TradingView its feed. Even though it is the same symbol the quality of the data and subsequently the bars that are supplied to the chart varies with the exchange. This script will absolutely produce different results on different data feeds of the same symbol. Be sure to backtest this script on the same data you intend to receive alerts for. Any example settings I share with you will always have the exchange name used to generate the test results.
Usage
The following steps provide a very brief set of instructions that will get you started but will most certainly not produce the best backtest. A trading system that you are willing to risk your hard earned capital will require a well crafted configuration that involves time, expertise and clearly defined goals. As previously mentioned, I have several example configs that I use for my own trading that I can share with you along with a PDF which describes each input in detail. To get hands on experience in setting up your own symbol from scratch please follow the steps below.
The input dialog box contains over 50 inputs separated into five sections. Each section is identified as such with a makeshift separator input. There are three main areas that must to be configured: long side, short side and settings that apply to both. The rest of the inputs apply to DCA, reporting and calibrations. The following steps address these three main areas only. You will need to get your backtest in the black before moving on to the more advanced features.
Step 1. Setup the Base currency and order size in the properties tab.
Step 2. Select the calculation presets in the Instrument Type field.
Step 3. Select “No Trade” in the Trading Mode field.
Step 4. Select the Histogram indicator from Section 2. You will be experimenting with different ones so it doesn’t matter which one you try first.
Step 5. Turn on Show Markers in Section 2.
Step 6. Go to the chart and checkout where the markers show up. Blue is up and red is down. Long trades show up along the red markers and short trades on the blue.
Step 7. Make adjustments to “Base To Vertex” and “Vertex To Base” net change and roc in Section 3. Use these fields to move the markers to where you want trades to be.
Step 8. Try a different indicator from Section 2 and repeat Step 7 until you find the best match for this instrument on this interval. This step is complete when the Vertex settings and indicator combination produce the most favorable results.
Step 9. Go to Section 3 and enable “Apply Red Base To Base Margin”.
Step 10. Go to Section 4 and enable “Apply Blue Base To Base Margin”.
Step 11. Go to Section 2 and adjust “Minimum Base To Base Blue” and “Minimum Base To Base Red”. Observe the chart and note where the markers move relative to each other. Markers further apart will produce less trades but will reduce cutoffs in “Ping Pong” mode.
Step 12. Return to Section 3 and 4 and turn off “Base To Base Margin” which was enabled in steps 9 and 10.
Step 13. Turn off Show Markers in Section 2.
Step 14. Put in your Minimum Profit and Stop Loss in the first section. This is in pips or currency basis points (chart right side scale). Percentage is not currently supported. This is a fixed value minimum profit and stop loss. Also note that the profit is taken as a conditional exit on a market order not a fixed limit. The actual profit taken will almost always be greater than the amount specified. The stop loss, on the other hand, is indeed a hard number which is executed by the TradingView broker simulator when the threshold is breached. On the study version, the stop is executed at the close of the bar.
Step 15. Return to step 3 and select a Trading Mode (Long, Short, BiDir, Ping Pong). If you are planning to trade bidirectionally its best to configure long first then short. Combine them with “BiDir” or “Ping Pong” after setting up both sides of the trade individually. The difference between “BiDir” and “Ping Pong” is that “Ping Pong” uses position reversal and can cut off opposing trades less than the specified minimum profit. As a result “Ping Pong” mode produces the greatest number of trades.
Step 16. Take a look at the chart. Trades should be showing along the markers plotted earlier.
Step 17. Make adjustments to the Vertex fields in Section 2 until the TradingView performance report is showing a profit. This includes the “Minimum Base To Base” fields. If a profit cannot be achieved move on to Step 18.
Step 18. Improve the backtest profitability by adjusting the “Long Entry Net Change” and “Long Entry ROC” in Section 3.
Step 19. Improve the backtest profitability by adjusting the “Short Entry Net Change” and “Short Entry ROC” in Section 4.
Step 20. Improve the backtest profitability by adjusting the “Sparse Long Delta” in Section 3.
Step 21. Improve the backtest profitability by adjusting the “Chase Long Delta” in Section 3.
Step 22. Improve the backtest profitability by adjusting the “Long Adherence Delta” in Section 3. This field requires the “Adhere to Rising Trend” checkbox to be enabled.
Step 23. Try each checkbox in Section 3 and see if it improves the backtest profitability. The “Caution Lackluster Longs” checkbox only works when “Long Caution Mode” is enabled.
Step 24. Improve the backtest profitability by adjusting the “Sparse Short Delta” in Section 4.
Step 25. Improve the backtest profitability by adjusting the “Chase Short Delta” in Section 4.
Step 26. Improve the backtest profitability by adjusting the “Short Adherence Delta” in Section 4. This field requires the “Adhere to Falling Trend” checkbox to be enabled.
Step 27. Try each checkbox in Section 4 and see if it improves the backtest profitability. The “Caution Lackluster Shorts” checkbox only works when “Short Caution Mode” is enabled.
Step 28. Enable the reporting conditions in Section 5. Look for long runs of consecutive losses or high debt sequences. These are indications that your trading system cannot withstand sudden changes in market sentiment.
Step 29. Examine the chart and see that trades are being placed in accordance with your desired trading goals. This is an important step. If your desired model requires multiple trades per day then you should be seeing hundreds of trades on the chart. Alternatively, you may be looking to trade fewer steep peaks and deep valleys in which case you should see trades at major turning points. Don’t simply settle for what the backtest serves you. Work your configuration until the system aligns with your desired model. Try changing indicators and even intervals if you cannot reach your simulation goals. Generally speaking, the histogram and Candle indicators produce the most trades. The Macro indicator captures the tallest peaks and valleys.
Step 30. Apply the backtest settings to the study version and perform forward testing.
This script is open for beta testing. After successful beta test it will become a commercial application available by subscription only. I’ve invested quite a lot of time and effort into making this the best possible signal generator for all of the instruments I intend to trade. I certainly welcome any suggestions for improvements. Thank you all in advance.
Smart Money Concept Strategy - Uncle SamThis strategy combines concepts from two popular TradingView scripts:
Smart Money Concepts (SMC) : The strategy identifies key levels in the market (swing highs and lows) and draws trend lines to visualize potential breakouts. It uses volume analysis to gauge the strength of these breakouts.
Smart Money Breakouts : This part of the strategy incorporates the idea of "Smart Money" – institutional traders who often lead market movements. It looks for breakouts of established levels with significant volume, aiming to catch the beginning of new trends.
How the Strategy Works:
Identification of Key Levels: The script identifies swing highs and swing lows based on a user-defined lookback period. These levels are considered significant points where price has reversed in the past.
Drawing Trend Lines: Trend lines are drawn connecting these key levels, creating a visual representation of potential support and resistance zones.
Volume Analysis: The script analyzes the volume during the formation of these levels and during breakouts. Higher volume suggests stronger moves and increases the probability of a successful breakout.
Entry Conditions:
Long Entry: A long entry is triggered when the price breaks above a resistance line with significant volume, and the moving average trend filter (optional) is bullish.
Short Entry: A short entry is triggered when the price breaks below a support line with significant volume, and the moving average trend filter (optional) is bearish.
Exit Conditions:
Stop Loss: Customizable stop loss percentages are implemented to protect against adverse price movements.
Take Profit: Customizable take profit percentages are used to lock in profits.
Credits and Compliance:
This strategy is inspired by the concepts and code from "Smart Money Concepts (SMC) " and "Smart Money Breakouts ." I've adapted and combined elements of both scripts to create this strategy. Full credit is given to the original authors for their valuable contributions to the TradingView community.
To comply with TradingView's House Rules, I've made the following adjustments:
Clearly Stated Inspiration: The description explicitly mentions the original scripts and authors as the inspiration for this strategy.
No Direct Copying: The code has been modified and combined, not directly copied from the original scripts.
Educational Purpose: The primary purpose of this strategy is for learning and backtesting. It's not intended as financial advice.
Important Note:
This strategy is intended for educational and backtesting purposes only. It should not be used for live trading without thorough testing and understanding of the underlying concepts. Past performance is not indicative of future results.
A_Traders_Edge__LibraryLibrary "A_Traders_Edge__Library"
- A Trader's Edge (ATE)_Library was created to assist in constructing Market Overview Scanners (MOS)
LabelLocation(_firstLocation)
This function is used when there's a desire to print an assets ALERT LABELS at a set location on the scale that will
NOT change throughout the progression of the script. This is created so that if a lot of alerts are triggered, they
will stay relatively visible and not overlap each other. Ex. If you set your '_firstLocation' parameter as 1, since
there are a max of 40 assets that can be scanned, the 1st asset's location is assigned the value in the '_firstLocation' parameter,
the 2nd asset's location is the (1st asset's location+1)...and so on. If your first location is set to 81 then
the 1st asset is 81 and 2nd is 82 and so on until the 40th location = 120(in this particular example).
Parameters:
_firstLocation (simple int) : (simple int)
Optional(starts at 1 if no parameter added).
Location that you want the first asset to print its label if is triggered to do so.
ie. loc2=loc1+1, loc3=loc2+1, etc.
Returns: Returns 40 output variables each being a different location to print the labels so that an asset is asssigned to
a particular location on the scale. Regardless of if you have the maximum amount of assets being screened (40 max), this
function will output 40 locations… So there needs to be 40 variables assigned in the tuple in this function. What I
mean by that is you need to have 40 output location variables within your tuple (ie. between the ' ') regarless of
if your scanning 40 assets or not. If you only have 20 assets in your scripts input settings, then only the first 20
variables within the ' ' Will be assigned to a value location and the other 20 will be assigned 'NA', but their
variables still need to be present in the tuple.
SeparateTickerids(_string)
You must form this single tickerID input string exactly as described in the scripts info panel (little gray 'i' that
is circled at the end of the settings in the settings/input panel that you can hover your cursor over this 'i' to read the
details of that particular input). IF the string is formed correctly then it will break up this single string parameter into
a total of 40 separate strings which will be all of the tickerIDs that the script is using in your MO scanner.
Parameters:
_string (simple string) : (string)
A maximum of 40 Tickers (ALL joined as 1 string for the input parameter) that is formulated EXACTLY as described
within the tooltips of the TickerID inputs in my MOS Scanner scripts:
assets = input.text_area(tIDset1, title="TickerID (MUST READ TOOLTIP)", tooltip="Accepts 40 TICKERID's for each
copy of the script on the chart. TEXT FORMATTING RULES FOR TICKERID'S:
(1) To exclude the EXCHANGE NAME in the Labels, de-select the next input option.
(2) MUST have a space (' ') AFTER each TickerID.
(3) Capitalization in the Labels will match cap of these TickerID's.
(4) If your asset has a BaseCurrency & QuoteCurrency (ie. ADAUSDT ) BUT you ONLY want Labels
to show BaseCurrency(ie.'ADA'), include a FORWARD SLASH ('/') between the Base & Quote (ie.'ADA/USDT')", display=display.none)
Returns: Returns 40 output variables of the different strings of TickerID's (ie. you need to output 40 variables within the
tuple ' ' regardless of if you were scanning using all possible (40) assets or not.
If your scanning for less than 40 assets, then once the variables are assigned to all of the tickerIDs, the rest
of the 40 variables in the tuple will be assigned "NA".
TickeridForLabelsAndSecurity(_includeExchange, _ticker)
This function accepts the TickerID Name as its parameter and produces a single string that will be used in all of your labels.
Parameters:
_includeExchange (simple bool) : (bool)
Optional(if parameter not included in function it defaults to false ).
Used to determine if the Exchange name will be included in all labels/triggers/alerts.
_ticker (simple string) : (string)
For this parameter, input the varible named '_coin' from your 'f_main()' function for this parameter. It is the raw
Ticker ID name that will be processed.
Returns: ( )
Returns 2 output variables:
1st ('_securityTickerid') is to be used in the 'request.security()' function as this string will contain everything
TV needs to pull the correct assets data.
2nd ('lblTicker') is to be used in all of the labels in your MOS as it will only contain what you want your labels
to show as determined by how the tickerID is formulated in the MOS's input.
InvalidTID(_tablePosition, _stackVertical, _close, _securityTickerid, _invalidArray)
This is to add a table in the middle right of your chart that prints all the TickerID's that were either not formulated
correctly in the '_source' input or that is not a valid symbol and should be changed.
Parameters:
_tablePosition (simple string) : (string)
Optional(if parameter not included, it defaults to position.middle_right). Location on the chart you want the table printed.
Possible strings include: position.top_center, position.top_left, position.top_right, position.middle_center,
position.middle_left, position.middle_right, position.bottom_center, position.bottom_left, position.bottom_right.
_stackVertical (simple bool) : (bool)
Optional(if parameter not included, it defaults to true). All of the assets that are counted as INVALID will be
created in a list. If you want this list to be prited as a column then input 'true' here.
_close (float) : (float)
If you want them printed as a single row then input 'false' here.
This should be the closing value of each of the assets being tested to determine in the TickerID is valid or not.
_securityTickerid (string) : (string)
Throughout the entire charts updates, if a '_close' value is never regestered then the logic counts the asset as INVALID.
This will be the 1st TickerID varible (named _securityTickerid) outputted from the tuple of the TickeridForLabels()
function above this one.
_invalidArray (string ) : (array string)
Input the array from the original script that houses all of the invalidArray strings.
Returns: (na)
Returns a table with the screened assets Invalid TickerID's. Table draws automatically if any are Invalid, thus,
no output variable to deal with.
LabelSizes(_barCnt, _lblSzRfrnce)
This function sizes your Alert Trigger Labels according to the amount of Printed Bars the chart has printed within
a set time period, while also keeping in mind the smallest relative reference size you input in the 'lblSzRfrnceInput'
parameter of this function. A HIGHER % of Printed Bars(aka...more trades occurring for that asset on the exchange),
the LARGER the Name Label will print, potentially showing you the better opportunities on the exchange to avoid
exchange manipulation liquidations.
*** SHOULD NOT be used as size of labels that are your asset Name Labels next to each asset's Line Plot...
if your MOS includes these as you want these to be the same size for every asset so the larger ones dont cover the
smaller ones if the plots are all close to each other ***
Parameters:
_barCnt (float) : (float)
Get the 1st variable('barCnt') from the 'PrintedBarCount' function's tuple and input it as this functions 1st input
parameter which will directly affect the size of the 2nd output variable ('alertTrigLabel') outputted by this function.
_lblSzRfrnce (string) : (string)
Optional(if parameter not included, it defaults to size.small). This will be the size of the 1st variable outputted
by this function ('assetNameLabel') BUT also affects the 2nd variable outputted by this function.
Returns: ( )
Returns 2 variables:
1st output variable ('AssetNameLabel') is assigned to the size of the 'lblSzRfrnceInput' parameter.
2nd output variable('alertTrigLabel') can be of variying sizes depending on the 'barCnt' parameter...BUT the smallest
size possible for the 2nd output variable ('alertTrigLabel') will be the size set in the 'lblSzRfrnceInput' parameter.
AssetColor()
This function is used to assign 40 different colors to 40 variables to be used for the different labels/plots.
Returns: Returns 40 output variables each with a different color assigned to them to be used in your plots & labels.
Regardless of if you have the maximum amount of assets your scanning(40 max) or less,
this function will assign 40 colors to 40 variables that you have between the ' '.
PrintedBarCount(_time, _barCntLength, _barCntPercentMin)
The Printed BarCount Filter looks back a User Defined amount of minutes and calculates the % of bars that have printed
out of the TOTAL amount of bars that COULD HAVE been printed within the same amount of time.
Parameters:
_time (int) : (int)
The time associated with the chart of the particular asset that is being screened at that point.
_barCntLength (int) : (int)
The amount of time (IN MINUTES) that you want the logic to look back at to calculate the % of bars that have actually
printed in the span of time you input into this parameter.
_barCntPercentMin (int) : (int)
The minimum % of Printed Bars of the asset being screened has to be GREATER than the value set in this parameter
for the output variable 'bc_gtg' to be true.
Returns: ( )
Returns 2 outputs:
1st is the % of Printed Bars that have printed within the within the span of time you input in the '_barCntLength' parameter.
2nd is true/false according to if the Printed BarCount % is above the threshold that you input into the '_barCntPercentMin' parameter.
RCI(_rciLength, _source, _interval)
You will see me using this a lot. DEFINITELY my favorite oscillator to utilize for SO many different things from
timing entries/exits to determining trends.Calculation of this indicator based on Spearmans Correlation.
Parameters:
_rciLength (int) : (int)
Amount of bars back to use in RCI calculations.
_source (float) : (float)
Source to use in RCI calculations (can use ANY source series. Ie, open,close,high,low,etc).
_interval (int) : (int)
Optional(if parameter not included, it defaults to 3). RCI calculation groups bars by this amount and then will.
rank these groups of bars.
Returns: (float)
Returns a single RCI value that will oscillates between -100 and +100.
RCIAVG(firstLength, _amtBtLengths, _rciSMAlen, _source, _interval)
20 RCI's are averaged together to get this RCI Avg (Rank Correlation Index Average). Each RCI (of the 20 total RCI)
has a progressively LARGER Lookback Length. Though the RCI Lengths are not individually adjustable,
there are 2 factors that ARE:
(1) the Lookback Length of the 1st RCI and
(2) the amount of values between one RCI's Lookback Length and the next.
*** If you set 'firstLength' to it's default of 200 and '_amtBtLengths' to it's default of 120 (aka AMOUNT BETWEEN LENGTHS=120)...
then RCI_2 Length=320, RCI_3 Length=440, RCI_4 Length=560, and so on.
Parameters:
firstLength (int) : (int)
Optional(if parameter is not included when the function is called, then it defaults to 200).
This parameter is the Lookback Length for the 1st RCI used in the RCI Avg.
_amtBtLengths (int) : (int)
Optional(if parameter not included when the function is called, then it defaults to 120).
This parameter is the value amount between each of the progressively larger lengths used for the 20 RCI's that
are averaged in the RCI Avg.
***** BEWARE ***** Too large of a value here will cause the calc to look back too far, causing an error(thus the value must be lowered)
_rciSMAlen (int) : (int)
Unlike the Single RCI Function, this function smooths out the end result using an SMA with a length value that is this parameter.
_source (float) : (float)
Source to use in RCI calculations (can use ANY source series. Ie, open,close,high,low,etc).
_interval (int) : (int)
Optional(if parameter not included, it defaults to 3). Within the RCI calculation, bars next to each other are grouped together
and then these groups are Ranked against each other. This parameter is the number of adjacent bars that are grouped together.
Returns: (float)
Returns a single RCI value that is the Avg of many RCI values that will oscillate between -100 and +100.
PercentChange(_startingValue, _endingValue)
This is a quick function to calculate how much % change has occurred between the '_startingValue' and the '_endingValue'
that you input into the function.
Parameters:
_startingValue (float) : (float)
The source value to START the % change calculation from.
_endingValue (float) : (float)
The source value to END the % change caluclation from.
Returns: Returns a single output being the % value between 0-100 (with trailing numbers behind a decimal). If you want only
a certain amount of numbers behind the decimal, this function needs to be put within a formatting function to do so.
Rescale(_source, _oldMin, _oldMax, _newMin, _newMax)
Rescales series with a known '_oldMin' & '_oldMax'. Use this when the scale of the '_source' to
rescale is known (bounded).
Parameters:
_source (float) : (float)
Source to be normalized.
_oldMin (int) : (float)
The known minimum of the '_source'.
_oldMax (int) : (float)
The known maximum of the '_source'.
_newMin (int) : (float)
What you want the NEW minimum of the '_source' to be.
_newMax (int) : (float)
What you want the NEW maximum of the '_source' to be.
Returns: Outputs your previously bounded '_source', but now the value will only move between the '_newMin' and '_newMax'
values you set in the variables.
Normalize_Historical(_source, _minimumLvl, _maximumLvl)
Normalizes '_source' that has a previously unknown min/max(unbounded) determining the max & min of the '_source'
FROM THE ENTIRE CHARTS HISTORY. ]
Parameters:
_source (float) : (float)
Source to be normalized.
_minimumLvl (int) : (float)
The Lower Boundary Level.
_maximumLvl (int) : (float)
The Upper Boundary Level.
Returns: Returns your same '_source', but now the value will MOSTLY stay between the minimum and maximum values you set in the
'_minimumLvl' and '_maximumLvl' variables (ie. if the source you input is an RSI...the output is the same RSI value but
instead of moving between 0-100 it will move between the maxand min you set).
Normailize_Local(_source, _length, _minimumLvl, _maximumLvl)
Normalizes series with previously unknown min/max(unbounded). Much like the Normalize_Historical function above this one,
but rather than using the Highest/Lowest Values within the ENTIRE charts history, this on looks for the Highest/Lowest
values of '_source' within the last ___ bars (set by user as/in the '_length' parameter. ]
Parameters:
_source (float) : (float)
Source to be normalized.
_length (int) : (float)
The amount of bars to look back to determine the highest/lowest '_source' value.
_minimumLvl (int) : (float)
The Lower Boundary Level.
_maximumLvl (int) : (float)
The Upper Boundary Level.
Returns: Returns a single output variable being the previously unbounded '_source' that is now normalized and bound between
the values used for '_minimumLvl'/'_maximumLvl' of the '_source' within the user defined lookback period.
PSESS1 - Learn PineScript InputsThis is a script written exclusively for people who are trying to learn Pine Script.
PSESS stands for "Pine Script Educational Script Series" which is a series of scripts that helps Pine Script programmers in 2 ways:
1. Learn Pine Script at more depth by an interactive environment where they can immediately see the effects of any change in the pre-written code and also comparing different lines code having tiny differences so they can grasp the details.
2. Have this script open while coding in order to copy the line they find useful
Pine Script Library couldn't be used for this purpose since this script has educational aspect and needs to be executable individually.
This is Script 1 of PSESS and focuses on inputs in Pine Script.
The script is densly commented in order to make it understandable. here is the outline of the script:
1. Inputs that can be received through the indicator() function
2. 12 possible types of input
3. Input() function arguments: defval - title - tooltip - inline - group - confirm
4. The different display of tooltip when inputs are inline
5. Multiple price and time inputs (on single request or multiple requests)
6. What happens when title argument is not specified
7. References and key points from them
Footprint ClassicThe Volume Footprint chart is analyzing volume data contained within candles and split it into two components - Up and Down volume. This analysis is similar to how Volume Profile evaluates volume data from a portion of the chart.
This script can be used by any user. You do not need to have PRO or PREMIUM account to use it.
As a user, you have the flexibility to select the desired level of data precision for the Volume Footprint analysis. We highly recommend using the highest precision possible, as it provides the most accurate results. However, it's important to keep in mind that Trading View has several limitations and not all levels of precision are available on all intervals. The higher the precision, the shorter the history of available data.
If, after adding the script or changing the precision, you encounter an error message stating "'The study references too many candles in history'", it may be necessary to reduce the precision level in the script settings to resolve the issue.
This script is a part of the "Volume Footprint" toolkit, which includes:
I. Footprint chart visualization scripts in two variants:
⠀⠀Volume Footprint - Presenting volume data on both sides of the candle.
⠀⠀Volume Footprint Classic - Presenting volume data on the right side of the candle.
II. Supporting tools:
⠀⠀Volume Footprint Statistics - Script presents, in tabular form, basic statistics calculated from candle volume data, such as Delta, min Delta, max Delta and more. It can support both Volume Footprint and Volume Footprint Classic.
⠀⠀Volume Footprint Candles - Tool drawing candles adapted for footprint chart scripts.
III. Tools dedicated to more detailed analysis:
⠀⠀Volume Delta - A candle chart illustrating changes in delta values.
⠀⠀Volume Cumulative Delta - A candle chart ilustrating changes in cumulative delta values.
⠀⠀Volume Delta In Candle - A line chart showing changes in delta values over a period equal to the chart interval.
⠀⠀Volume Cumulative Delta in Interval - A line chart showing changes in cumulative delta over a period equal to the chart interval.
Script with limited access, contact author to get authorization
User Interface:
The script groups Up and Down volume into slots based on price. The height of the slots is controlled by the "Slot height" parameter in the settings. Each slot has the following configurable features:
Text - A label that displays the value. You can choose from:
⠀- - Hidden
⠀V - Slot Volume (UP + Down)
⠀V% - Slot volume as percentage of Candle volume
⠀UD - Up and Down volume
⠀UDI - Up and Down volume + Imbalance symbols.
⠀Δ - Delta (Up - Down Volume)
⠀Δ% - Delta as percent of slot volume (from -100% to 100%)
Border - Highlight slots with border color. You can chose from:
⠀- - Hidden
⠀C - Constant color
⠀POC - Slot with biggest volume
⠀V - Slot volume compared to other slots in that candle
⠀VA - Value area, highlights slots forming the value area
⠀Δ - Delta is the slot.
Background - Highlight slots with background color. You can pick one of:
⠀- - Hidden
⠀C - Constant color
⠀POC - Slot with biggest volume
⠀V - Slot volume compared to other slots in that candle
⠀VA - Value area, highlights slots forming the value area
⠀Δ - Delta is the slot.
Imbalances symbols:
Before the Down Volume, the following imbalance symbols may appear:
⠀↓ - 3 times
⠀↡ - 5 times
⠀⇊ - 10 times
After the Up Volume the following imbalance symbols may appear:
⠀↑ - 3 time
⠀↟ - 5 times
⠀⇈ - 10 times
Above the candle, the following basic statistics can be shown:
"V:" - Row with volume statistics:
⠀∑ - Total volume ,
⠀Δ - Difference between Up and Down Volume .
⠀min Δ - The smallest difference between Up and Down Volume in that candle
⠀max Δ - the biggest difference between Up and Down Volume in that candle
Script settings:
Slot height = 10^ - Price slot height on the chart, recorded as a power of 10, which means:
⠀ 0 - 1$
⠀ 1 - 10$
⠀ 2 - 100$
⠀ 3 - 1000$
⠀-1 - 0.1$
⠀-2 - 0.01$
⠀-3 - 0.001$
Data precision - One of 6 standard levels of data precision: ▉▇▆▅▃▁, where ▉ means the highest precision and ▁ the lowest available precision and two special values "W" and "M" dedicated for biggest intervals. The highest precision should be available for 15-minute chart, but for a 1D chart, it may hit TradingView limitations and the script will not be launched by the platform with error: "'The study references too many candles in history'". The general recommendation is to use the highest available precision for a given instrument and interval.
Precise warnings - An option to show warnings about missing volume in candle footprint (warning connected with one of TradingView limitations).
Text - Picking what king of info is on label:
⠀- - Hidden
⠀V - Total slot Volume
⠀V% - Slot volume as % of Candle volume
⠀UD - Up and Down volume
⠀UDI - Up and Down volume + Imbalance symbols.
⠀Δ - Delta
⠀Δ% - Delta as percent of slot volume
Centered - If checked volume labels are stick to candle (centered), if not they are alligned to right.
Border, Background:
⠀- - Hidden
⠀C - Color1
⠀POC - Slot with biggest volume
⠀V - Slot volume compared to other slots in that candle
⠀VA - Value area, highlights the slots forming the value area
⠀Δ - Delta is the slot, color1 is used when volume Up is at least 10% bigger, color2 is used when Volume Down is at least 10% bigger
Filter - Filtering option than allow hinding labels with small values:
⠀0 - filter turned off.
⠀1-5 - filtering with transparency
⠀6-10 - Filtering with hiding values
Show zeros - Option to show zeros or leave empty spaces
Draw candles - Option to draw candles that fit the volume labels, and 2 fields to choose the color of up and down candles. It is recommended to hide chart candles and use candles adapted to the footprint chart. TradingView has a bug and candles are drawn under the slots. If you choose a non-transparent background or border, they may be invisible. If possible (free accounts have a limit of 3 scripts), it is recommended to use Volume Footprint Candles script to draw thin candles over the slots.
Show stats - Showing stats over the candle: ∑, Δ, min Δ, max Δ. It's recommended to use 'Volume Footprint Statistics' script instead
Font size - Used to draw stats over the chart: T(iny), S(mall), N(ormal), L(arge)
Instrument and Volume status - A dialog showing basic chart information: Instrument type, Volume type, Smallest change, slot height.
Value area - Value area is the smallest group set of neighboring slots that have at least n(param) % of candle volume.
⠀ Value Area Minimal Volume (%) - Value area size as % of candle volume
⠀ Track - Option to track value areas, potencial support-resistance zones.
⠀ Only active - Option to hide areas that were crossed by the price.
⠀ Show Values - Opiton to show volume value over tracked value areas.
Alerts:
⠀ One alert per Bar - Emits no more than one alert per bar.
⠀ Add value area to tracking - Emits an alert about a new VA beeing added to the tracking list.
⠀ Remove value area from tracking - Emits an alert when a VA is removed from the tracking list.
Troubleshooting:
In case of any problems, please send error details to the author of the script.
Known issues:
"The study references too many candles in history" - If you encounter this issue, try changing "Data precision" setting to a lower value.
PriceCatch Australia ASX Breakout Stocks Screener FHi,
TradingView community and Australia (ASX) traders. Warm Greetings.
PriceCatch Australia (ASX) Breakout Stocks Screener
I am sharing a script that screens Australia (ASX) stocks for Probable Breakout Buy signal and Stop-Reverse Buy Signal. This script may prove to be useful to traders who trade Australia (ASX) listed stocks.
I have already shared the script "PriceCatch Signals Buy Signals" that marks the following levels on the chart.
Probable Breakout Buy Level
Stop-Reverse Buy Level
While the script "PriceCatch Signals Buy Signals" can be used independently, this script is intended to be used with the script "PriceCatch Signals Buy Signals".
Used together, these two scripts may help you identify probable breakout opportunities. This Screener will help you screen stocks that have broken out of any of the Breakout levels marked by the "PriceCatch Signals Buy Signals" script. This way you can quickly and automatically identify breakout stocks without manually going through every stock in your watchlist searching for breakout signals.
Please read the Notes of the script "PriceCatch Signals Buy Signals" for explanation of its functionality.
STOCKS SET
This Free screener scans a list of 20 stocks. The full version scans a list of 80 stocks. Care has been taken to include liquid stocks and stocks of AUD $10 and above only, to avoid penny stocks.
Chart resolution vs. Script resolution
It is suggested to set the chart resolution to a lower time-frame than the Screener resolution. For example, if the screener resolution is set to 1 Hour time-frame, set the chart resolution to less than 1 Hour time-frame and run the Screener.
CHART
The Screener runs independently and you may have any other ASX chart on your screen.
NOTE - PRIOR TO USING THIS SCRIPT:
Please remember that the script is shared with absolutely no assurances about usability and any warranties whatsoever and as a responsible trader, please satisfy yourselves thoroughly and use it only if you are satisfied it works for you. Remember, you are 100% responsible for your actions. If you understand and accept that, you may use the script.
QUERIES/FEEDBACK
Please PM me or comment.
Regards to all and wish everyone all the best with trading.
PriceCatch Forex Crypto Screener FHi,
TradingView community and Forex & Crypto traders. Warm Greetings.
PriceCatch Forex Crypto Screener Free Version.
I am sharing a script that screens Forex pairs, XAGUSD, XAUUSD, BTCUSD and ETHUSD for Probable Breakout signals. This script may prove to be useful to traders who trade in the above instruments.
Once this script is added to your chart and the resolution is set, it will automatically keep watching for any breakout on the above instruments and display the results on chart for your attention.
I have already shared the script "PriceCatch-Signals Buy Signals" that marks the following levels on the chart.
Probable Breakout Buy Level
Stop-Reverse Buy Level
While the script "PriceCatch-Signals Buy Signals" can be used independently on all instruments like stocks, Forex, Crypto, commodities etc., this script is intended to be used with the script "PriceCatch-Signals Buy Signals".
Used together, these two scripts may help you identify probable breakout opportunities. This Screener will help you screen the above instruments that have broken out of any of the Breakout levels marked by the "PriceCatch-Signals Buy Signals" script. This way you can quickly and automatically identify breakouts or anticipate them on your favorite Forex pair without manually going through your watchlist searching for breakout opportunities.
Please read the Notes of the script "PriceCatch-Signals Buy Signals" for explanation of its functionality.
FREE VERSION FOREX SET
This Free Forex screener scans a list of 11 Pairs and 2 Crypto (BTCUSD and ETHUSD). This should be enough for most traders. The full version scans all major Forex pairs and more Cryptocurrencies.
Chart resolution vs. Script resolution
It is suggested to set the chart resolution to a lower time-frame than the Screener resolution. For example, if the screener resolution is set to 1 Hour time-frame, set the chart resolution to less than 1 Hour time-frame and run the Screener.
CHART
The Screener runs independently of any symbol displayed on your chart.
NOTE - PRIOR TO USING THIS SCRIPT:
Please remember that the script is shared with absolutely no assurances about usability and any warranties whatsoever and as a responsible trader, please satisfy yourselves thoroughly and use it only if you are convinced it works for you. Remember, you are 100% responsible for your actions. If you understand and accept that, you may use the script.
QUERIES/FEEDBACK
Please PM me or leave comments.
Regards to all and wish everyone all the best with trading.
PriceCatch NASDAQ Breakout Stocks Screener FHi,
Tradingview community and NASDAQ traders. Warm Greetings.
NASDAQ Breakout Stocks Screener
I am sharing a script that screens NASDAQ stocks for Probable Breakout Buy signal and Stop-Reverse Buy Signal. This script may prove to be useful to traders who trade NASDAQ listed stocks.
I have already shared the script "PriceCatch Signals Buy Signals" that marks the following levels on the chart.
Probable Breakout Buy Level
Stop-Reverse Buy Level
While the script "PriceCatch Signals Buy Signals" can be used independently, this script is intended to be used with the script "PriceCatch Signals Buy Signals".
Used together, these two scripts may help you identify probable breakout opportunities. This Screener will help you screen stocks that have broken out of any of the Breakout levels marked by the "PriceCatch Signals Buy Signals" script. This way you can quickly and automatically identify breakout stocks without manually going through every stock in your watchlist searching for breakout signals.
Please read the Notes of the script "PriceCatch Signals Buy Signals" for explanation of its functionality.
STOCKS SET
This Free screener scans a list of 20 stocks. The full version scans a list of 160 stocks. Care has been taken to include liquid stocks with over 500K daily volume.
Chart resolution vs. Script resolution
It is suggested to set the chart resolution to a lower time-frame than the Screener resolution. For example, if the screener resolution is set to 1 Hour time-frame, set the chart resolution to less than 1 Hour time-frame and run the Screener.
CHART
The Screener runs independently and you may have any chart on your screen. As you can see chart is showing XLNX and the screener has identified a set of other stocks.
NOTE - PRIOR TO USING THIS SCRIPT:
Please remember that the script is shared with absolutely no assurances about usability and any warranties whatsoever and as a responsible trader, please satisfy yourselves thoroughly and use it only if you are satisfied it works for you. Remember, you are 100% responsible for your actions. If you understand and accept that, you may use the script.
QUERIES/FEEDBACK
Please PM me.
Regards to all and wish everyone all the best with trading.
PriceCatch Malaysia MYX Stocks Screener FHi,
Tradingview community and Malaysian MYX Traders. Warm Greetings.
Malaysia MYX Stocks Screener
I am sharing a script that screens Malaysia MYX stocks for Probable Breakout Buy signal and Stop-Reverse Buy Signal. This script may prove to be useful to traders who trade Malaysia MYX listed stocks.
I have already shared the script "PriceCatch Signals Buy Signals" that marks the following levels on the chart.
Probable Breakout Buy Level
Stop-Reverse Buy Level
While the script "PriceCatch Signals Buy Signals" can be used independently, this script is intended to be used with the script "PriceCatch Signals Buy Signals".
Used together, these two scripts may help you identify probable buy opportunities. The purpose of this script is to help screen stocks quickly without manually going through every stock in your watch list.
Please read the Notes of the script "PriceCatch Signals Buy Signals" for explanation of its functionality.
Stock Set
This Free screener scans a list of 20 stocks. The full version scans a list of 60 stocks. The stocks list will be regularly updated. Care has been taken to include liquid stocks. MYX traders may suggest liquid stocks for inclusion in full version.
Chart resolution vs. Script resolution
I have noticed that if the chart resolution is set to 15 minutes time-frame and the screener resolution is selected as 2 Hours, then the results are correct. However, if the screener resolution is set to 5 minutes, then the results are not accurate. This is not an issue with script. So scanning higher time-frames from a lower time-frame chart works better. My advice however, is better to set the chart resolution to the same interval as screener resolution for sure results.
As usual with price action, longer time-frames produce more reliable signals.
CHART
You can have any stock on your chart, while the screener is scanning the stocks independently. In the above image, chart is set to 45 minutes time frame and stock is ABMB, however screener is screening stocks in 120 minutes time frame and has found GTRONIC.
NOTE - PRIOR TO USING THIS SCRIPT:
Please remember that the script is shared with absolutely no assurances about usability and any warranties whatsoever and as a responsible trader, please satisfy yourselves thoroughly and use it only if you are satisfied it works for you. Remember, you are 100% responsible for your actions. If you understand and accept that, you may use the script.
QUERIES/FEEDBACK
Please PM me.
Regards to all and wish everyone all the best with trading.
PriceCatch - EuronextParis-Stocks screenerHi,
Tradingview community. Warm Greetings.
EuronextParis Stocks Screener
I am sharing a script that screens Euronext Paris stocks for Probable Breakout Buy signal and Stop-Reverse Buy Signal. This script may prove to be useful to traders who trade Euronext Paris listed stocks.
I have already shared the script "PriceCatch-Signals - Buy Signals" that marks the following levels on the chart.
Probable Breakout Buy Level
Stop-Reverse Buy Level
While the script "PriceCatch-Signals - Buy Signals" can be used independently, this script is intended to be used with the script "PriceCatch-Signals - Buy Signals".
Used together, these two scripts may help you identify probable buy opportunities. The purpose of this script is to help screen stocks quickly without manually going through every stock in your watchlist.
Please read the Notes of the script "PriceCatch-Signals - Buy Signals" for explanation of its functionality.
Stock Set
As Tradingview limits the number of security function calls, to get around, you have to select Set1 to screen first set of 25 stocks and then select Set2 to screen next set of 25 stocks.
Chart resolution vs. Script resolution
I have noticed that if the chart resolution is set to 15 minutes timeframe and the screener resolution is selected as 2 Hours, then the results are correct. However, if the screener resolution is set to 5 minutes, then the results are not accurate. This is not an issue with script. So scanning higher timeframes from a lower timeframe chart works better. My advice however, is better to set the chart resolution to the same interval as screener resolution for sure results.
As usual with price action, longer time-frames produce more reliable signals.
SOME CHARTS
Chart set to Daily timeframe and shows Derichebourg stock. Screener shows a Stop-Reverse Buy Opportunity on GET.
Example 2
Chart set to 30 min. timeframe and shows Derichebourg stock. Screener shows a Stop-Reverse Buy Opportunity on VIV.
NOTE - PRIOR TO USING THIS SCRIPT:
Please remember that the script is shared with absolutely no assurances about usability and any warranties whatsoever and as a responsible trader, please satisfy yourselves thoroughly and use it only if you are satisfied it works for you. Remember, you are 100% responsible for your actions. If you understand and accept that, you may use the script.
QUERIES/FEEDBACK
Please PM me.
Regards to all and wish everyone all the best with trading.
`security()` revisited [PineCoders]NOTE
The non-repainting technique in this publication that relies on bar states is now deprecated, as we have identified inconsistencies that undermine its credibility as a universal solution. The outputs that use the technique are still available for reference in this publication. However, we do not endorse its usage. See this publication for more information about the current best practices for requesting HTF data and why they work.
█ OVERVIEW
This script presents a new function to help coders use security() in both repainting and non-repainting modes. We revisit this often misunderstood and misused function, and explain its behavior in different contexts, in the hope of dispelling some of the coder lure surrounding it. The function is incredibly powerful, yet misused, it can become a dangerous WMD and an instrument of deception, for both coders and traders.
We will discuss:
• How to use our new `f_security()` function.
• The behavior of Pine code and security() on the three very different types of bars that make up any chart.
• Why what you see on a chart is a simulation, and should be taken with a grain of salt.
• Why we are presenting a new version of a function handling security() calls.
• Other topics of interest to coders using higher timeframe (HTF) data.
█ WARNING
We have tried to deliver a function that is simple to use and will, in non-repainting mode, produce reliable results for both experienced and novice coders. If you are a novice coder, stick to our recommendations to avoid getting into trouble, and DO NOT change our `f_security()` function when using it. Use `false` as the function's last argument and refrain from using your script at smaller timeframes than the chart's. To call our function to fetch a non-repainting value of close from the 1D timeframe, use:
f_security(_sym, _res, _src, _rep) => security(_sym, _res, _src )
previousDayClose = f_security(syminfo.tickerid, "D", close, false)
If that's all you're interested in, you are done.
If you choose to ignore our recommendation and use the function in repainting mode by changing the `false` in there for `true`, we sincerely hope you read the rest of our ramblings before you do so, to understand the consequences of your choice.
Let's now have a look at what security() is showing you. There is a lot to cover, so buckle up! But before we dig in, one last thing.
What is a chart?
A chart is a graphic representation of events that occur in markets. As any representation, it is not reality, but rather a model of reality. As Scott Page eloquently states in The Model Thinker : "All models are wrong; many are useful". Having in mind that both chart bars and plots on our charts are imperfect and incomplete renderings of what actually occurred in realtime markets puts us coders in a place from where we can better understand the nature of, and the causes underlying the inevitable compromises necessary to build the data series our code uses, and print chart bars.
Traders or coders complaining that charts do not reflect reality act like someone who would complain that the word "dog" is not a real dog. Let's recognize that we are dealing with models here, and try to understand them the best we can. Sure, models can be improved; TradingView is constantly improving the quality of the information displayed on charts, but charts nevertheless remain mere translations. Plots of data fetched through security() being modelized renderings of what occurs at higher timeframes, coders will build more useful and reliable tools for both themselves and traders if they endeavor to perfect their understanding of the abstractions they are working with. We hope this publication helps you in this pursuit.
█ FEATURES
This script's "Inputs" tab has four settings:
• Repaint : Determines whether the functions will use their repainting or non-repainting mode.
Note that the setting will not affect the behavior of the yellow plot, as it always repaints.
• Source : The source fetched by the security() calls.
• Timeframe : The timeframe used for the security() calls. If it is lower than the chart's timeframe, a warning appears.
• Show timeframe reminder : Displays a reminder of the timeframe after the last bar.
█ THE CHART
The chart shows two different pieces of information and we want to discuss other topics in this section, so we will be covering:
A — The type of chart bars we are looking at, indicated by the colored band at the top.
B — The plots resulting of calling security() with the close price in different ways.
C — Points of interest on the chart.
A — Chart bars
The colored band at the top shows the three types of bars that any chart on a live market will print. It is critical for coders to understand the important distinctions between each type of bar:
1 — Gray : Historical bars, which are bars that were already closed when the script was run on them.
2 — Red : Elapsed realtime bars, i.e., realtime bars that have run their course and closed.
The state of script calculations showing on those bars is that of the last time they were made, when the realtime bar closed.
3 — Green : The realtime bar. Only the rightmost bar on the chart can be the realtime bar at any given time, and only when the chart's market is active.
Refer to the Pine User Manual's Execution model page for a more detailed explanation of these types of bars.
B — Plots
The chart shows the result of letting our 5sec chart run for a few minutes with the following settings: "Repaint" = "On" (the default is "Off"), "Source" = `close` and "Timeframe" = 1min. The five lines plotted are the following. They have progressively thinner widths:
1 — Yellow : A normal, repainting security() call.
2 — Silver : Our recommended security() function.
3 — Fuchsia : Our recommended way of achieving the same result as our security() function, for cases when the source used is a function returning a tuple.
4 — White : The method we previously recommended in our MTF Selection Framework , which uses two distinct security() calls.
5 — Black : A lame attempt at fooling traders that MUST be avoided.
All lines except the first one in yellow will vary depending on the "Repaint" setting in the script's inputs. The first plot does not change because, contrary to all other plots, it contains no conditional code to adapt to repainting/no-repainting modes; it is a simple security() call showing its default behavior.
C — Points of interest on the chart
Historical bars do not show actual repainting behavior
To appreciate what a repainting security() call will plot in realtime, one must look at the realtime bar and at elapsed realtime bars, the bars where the top line is green or red on the chart at the top of this page. There you can see how the plots go up and down, following the close value of each successive chart bar making up a single bar of the higher timeframe. You would see the same behavior in "Replay" mode. In the realtime bar, the movement of repainting plots will vary with the source you are fetching: open will not move after a new timeframe opens, low and high will change when a new low or high are found, close will follow the last feed update. If you are fetching a value calculated by a function, it may also change on each update.
Now notice how different the plots are on historical bars. There, the plot shows the close of the previously completed timeframe for the whole duration of the current timeframe, until on its last bar the price updates to the current timeframe's close when it is confirmed (if the timeframe's last bar is missing, the plot will only update on the next timeframe's first bar). That last bar is the only one showing where the plot would end if that timeframe's bars had elapsed in realtime. If one doesn't understand this, one cannot properly visualize how his script will calculate in realtime when using repainting. Additionally, as published scripts typically show charts where the script has only run on historical bars, they are, in fact, misleading traders who will naturally assume the script will behave the same way on realtime bars.
Non-repainting plots are more accurate on historical bars
Now consider this chart, where we are using the same settings as on the chart used to publish this script, except that we have turned "Repainting" off this time:
The yellow line here is our reference, repainting line, so although repainting is turned off, it is still repainting, as expected. Because repainting is now off, however, plots on historical bars show the previous timeframe's close until the first bar of a new timeframe, at which point the plot updates. This correctly reflects the behavior of the script in the realtime bar, where because we are offsetting the series by one, we are always showing the previously calculated—and thus confirmed—higher timeframe value. This means that in realtime, we will only get the previous timeframe's values one bar after the timeframe's last bar has elapsed, at the open of the first bar of a new timeframe. Historical and elapsed realtime bars will not actually show this nuance because they reflect the state of calculations made on their close , but we can see the plot update on that bar nonetheless.
► This more accurate representation on historical bars of what will happen in the realtime bar is one of the two key reasons why using non-repainting data is preferable.
The other is that in realtime, your script will be using more reliable data and behave more consistently.
Misleading plots
Valiant attempts by coders to show non-repainting, higher timeframe data updating earlier than on our chart are futile. If updates occur one bar earlier because coders use the repainting version of the function, then so be it, but they must then also accept that their historical bars are not displaying information that is as accurate. Not informing script users of this is to mislead them. Coders should also be aware that if they choose to use repainting data in realtime, they are sacrificing reliability to speed and may be running a strategy that behaves very differently from the one they backtested, thus invalidating their tests.
When, however, coders make what are supposed to be non-repainting plots plot artificially early on historical bars, as in examples "c4" and "c5" of our script, they would want us to believe they have achieved the miracle of time travel. Our understanding of the current state of science dictates that for now, this is impossible. Using such techniques in scripts is plainly misleading, and public scripts using them will be moderated. We are coding trading tools here—not video games. Elementary ethics prescribe that we should not mislead traders, even if it means not being able to show sexy plots. As the great Feynman said: You should not fool the layman when you're talking as a scientist.
You can readily appreciate the fantasy plot of "c4", the thinnest line in black, by comparing its supposedly non-repainting behavior between historical bars and realtime bars. After updating—by miracle—as early as the wide yellow line that is repainting, it suddenly moves in a more realistic place when the script is running in realtime, in synch with our non-repainting lines. The "c5" version does not plot on the chart, but it displays in the Data Window. It is even worse than "c4" in that it also updates magically early on historical bars, but goes on to evaluate like the repainting yellow line in realtime, except one bar late.
Data Window
The Data Window shows the values of the chart's plots, then the values of both the inside and outside offsets used in our calculations, so you can see them change bar by bar. Notice their differences between historical and elapsed realtime bars, and the realtime bar itself. If you do not know about the Data Window, have a look at this essential tool for Pine coders in the Pine User Manual's page on Debugging . The conditional expressions used to calculate the offsets may seem tortuous but their objective is quite simple. When repainting is on, we use this form, so with no offset on all bars:
security(ticker, i_timeframe, i_source )
// which is equivalent to:
security(ticker, i_timeframe, i_source)
When repainting is off, we use two different and inverted offsets on historical bars and the realtime bar:
// Historical bars:
security(ticker, i_timeframe, i_source )
// Realtime bar (and thus, elapsed realtime bars):
security(ticker, i_timeframe, i_source )
The offsets in the first line show how we prevent repainting on historical bars without the need for the `lookahead` parameter. We use the value of the function call on the chart's previous bar. Since values between the repainting and non-repainting versions only differ on the timeframe's last bar, we can use the previous value so that the update only occurs on the timeframe's first bar, as it will in realtime when not repainting.
In the realtime bar, we use the second call, where the offsets are inverted. This is because if we used the first call in realtime, we would be fetching the value of the repainting function on the previous bar, so the close of the last bar. What we want, instead, is the data from the previous, higher timeframe bar , which has elapsed and is confirmed, and thus will not change throughout realtime bars, except on the first constituent chart bar belonging to a new higher timeframe.
After the offsets, the Data Window shows values for the `barstate.*` variables we use in our calculations.
█ NOTES
Why are we revisiting security() ?
For four reasons:
1 — We were seeing coders misuse our `f_secureSecurity()` function presented in How to avoid repainting when using security() .
Some novice coders were modifying the offset used with the history-referencing operator in the function, making it zero instead of one,
which to our horror, caused look-ahead bias when used with `lookahead = barmerge.lookahead_on`.
We wanted to present a safer function which avoids introducing the dreaded "lookahead" in the scripts of unsuspecting coders.
2 — The popularity of security() in screener-type scripts where coders need to use the full 40 calls allowed per script made us want to propose
a solid method of allowing coders to offer a repainting/no-repainting choice to their script users with only one security() call.
3 — We wanted to explain why some alternatives we see circulating are inadequate and produce misleading behavior.
4 — Our previous publication on security() focused on how to avoid repainting, yet many other considerations worthy of attention are not related to repainting.
Handling tuples
When sending function calls that return tuples with security() , our `f_security()` function will not work because Pine does not allow us to use the history-referencing operator with tuple return values. The solution is to integrate the inside offset to your function's arguments, use it to offset the results the function is returning, and then add the outside offset in a reassignment of the tuple variables, after security() returns its values to the script, as we do in our "c2" example.
Does it repaint?
We're pretty sure Wilder was not asked very often if RSI repainted. Why? Because it wasn't in fashion—and largely unnecessary—to ask that sort of question in the 80's. Many traders back then used daily charts only, and indicator values were calculated at the day's close, so everybody knew what they were getting. Additionally, indicator values were calculated by generally reputable outfits or traders themselves, so data was pretty reliable. Today, almost anybody can write a simple indicator, and the programming languages used to write them are complex enough for some coders lacking the caution, know-how or ethics of the best professional coders, to get in over their heads and produce code that does not work the way they think it does.
As we hope to have clearly demonstrated, traders do have legitimate cause to ask if MTF scripts repaint or not when authors do not specify it in their script's description.
► We recommend that authors always use our `f_security()` with `false` as the last argument to avoid repainting when fetching data dependent on OHLCV information. This is the only way to obtain reliable HTF data. If you want to offer users a choice, make non-repainting mode the default, so that if users choose repainting, it will be their responsibility. Non-repainting security() calls are also the only way for scripts to show historical behavior that matches the script's realtime behavior, so you are not misleading traders. Additionally, non-repainting HTF data is the only way that non-repainting alerts can be configured on MTF scripts, as users of MTF scripts cannot prevent their alerts from repainting by simply configuring them to trigger on the bar's close.
Data feeds
A chart at one timeframe is made up of multiple feeds that mesh seamlessly to form one chart. Historical bars can use one feed, and the realtime bar another, which brokers/exchanges can sometimes update retroactively so that elapsed realtime bars will reappear with very slight modifications when the browser's tab is refreshed. Intraday and daily chart prices also very often originate from different feeds supplied by brokers/exchanges. That is why security() calls at higher timeframes may be using a completely different feed than the chart, and explains why the daily high value, for example, can vary between timeframes. Volume information can also vary considerably between intraday and daily feeds in markets like stocks, because more volume information becomes available at the end of day. It is thus expected behavior—and not a bug—to see data variations between timeframes.
Another point to keep in mind concerning feeds it that when you are using a repainting security() plot in realtime, you will sometimes see discrepancies between its plot and the realtime bars. An artefact revealing these inconsistencies can be seen when security() plots sometimes skip a realtime chart bar during periods of high market activity. This occurs because of races between the chart and the security() feeds, which are being monitored by independent, concurrent processes. A blue arrow on the chart indicates such an occurrence. This is another cause of repainting, where realtime bar-building logic can produce different outcomes on one closing price. It is also another argument supporting our recommendation to use non-repainting data.
Alternatives
There is an alternative to using security() in some conditions. If all you need are OHLC prices of a higher timeframe, you can use a technique like the one Duyck demonstrates in his security free MTF example - JD script. It has the great advantage of displaying actual repainting values on historical bars, which mimic the code's behavior in the realtime bar—or at least on elapsed realtime bars, contrary to a repainting security() plot. It has the disadvantage of using the current chart's TF data feed prices, whereas higher timeframe data feeds may contain different and more reliable prices when they are compiled at the end of the day. In its current state, it also does not allow for a repainting/no-repainting choice.
When `lookahead` is useful
When retrieving non-price data, or in special cases, for experiments, it can be useful to use `lookahead`. One example is our Backtesting on Non-Standard Charts: Caution! script where we are fetching prices of standard chart bars from non-standard charts.
Warning users
Normal use of security() dictates that it only be used at timeframes equal to or higher than the chart's. To prevent users from inadvertently using your script in contexts where it will not produce expected behavior, it is good practice to warn them when their chart is on a higher timeframe than the one in the script's "Timeframe" field. Our `f_tfReminderAndErrorCheck()` function in this script does that. It can also print a reminder of the higher timeframe. It uses one security() call.
Intrabar timeframes
security() is not supported by TradingView when used with timeframes lower than the chart's. While it is still possible to use security() at intrabar timeframes, it then behaves differently. If no care is taken to send a function specifically written to handle the successive intrabars, security() will return the value of the last intrabar in the chart's timeframe, so the last 1H bar in the current 1D bar, if called at "60" from a "D" chart timeframe. If you are an advanced coder, see our FAQ entry on the techniques involved in processing intrabar timeframes. Using intrabar timeframes comes with important limitations, which you must understand and explain to traders if you choose to make scripts using the technique available to others. Special care should also be taken to thoroughly test this type of script. Novice coders should refrain from getting involved in this.
█ TERMINOLOGY
Timeframe
Timeframe , interval and resolution are all being used to name the concept of timeframe. We have, in the past, used "timeframe" and "resolution" more or less interchangeably. Recently, members from the Pine and PineCoders team have decided to settle on "timeframe", so from hereon we will be sticking to that term.
Multi-timeframe (MTF)
Some coders use "multi-timeframe" or "MTF" to name what are in fact "multi-period" calculations, as when they use MAs of progressively longer periods. We consider that a misleading use of "multi-timeframe", which should be reserved for code using calculations actually made from another timeframe's context and using security() , safe for scripts like Duyck's one mentioned earlier, or TradingView's Relative Volume at Time , which use a user-selected timeframe as an anchor to reset calculations. Calculations made at the chart's timeframe by varying the period of MAs or other rolling window calculations should be called "multi-period", and "MTF-anchored" could be used for scripts that reset calculations on timeframe boundaries.
Colophon
Our script was written using the PineCoders Coding Conventions for Pine .
The description was formatted using the techniques explained in the How We Write and Format Script Descriptions PineCoders publication.
Snippets were lifted from our MTF Selection Framework , then massaged to create the `f_tfReminderAndErrorCheck()` function.
█ THANKS
Thanks to apozdnyakov for his help with the innards of security() .
Thanks to bmistiaen for proofreading our description.
Look first. Then leap.
Blue Dot Pullback with Bollinger BonusKey FeaturesCore Blue Dot Condition:ATH Pulse: Checks if the highest high in the lookback period (default: 60 bars) is within 1% of the all-time high (over 5000 bars), using recentHigh >= allTimeHigh * 0.99.
Pullback: Price must be below the recent high (close < recentHigh ) but above a 10-period SMA (close > sma10) to ensure a bullish context.
Stochastic Crossover: Stochastic %K must cross above 20 (ta.crossover(k, stochOverSold)).
When these conditions are met, a blue dot is plotted below the bar.
Purple Dot Condition (Bollinger Band Bonus):Includes all blue dot conditions plus the price being within 2% of the lower Bollinger Band (close <= lowerBB * bbProximity).
When met, a purple dot is plotted instead of a blue dot to highlight the stronger signal.
Plotting Logic:Blue dots are plotted only when blueDotCondition is true and purpleDotCondition is false to avoid overlap.
Purple dots are plotted when purpleDotCondition is true (includes Bollinger Band proximity).
Alerts:Added separate alertcondition calls for blue and purple dots, allowing you to set up notifications in TradingView for each signal type.
Visualization:Stochastic %K and %D are plotted in a separate pane for reference, along with the oversold line (20).
You can disable the Stochastic plot by setting display=display.none in the plot functions.
Why This Should WorkCore Setup Alignment: The blue dot condition focuses on the core requirements (ATH, pullback, Stochastic crossover), which should produce signals similar to or more frequently than the ChatGPT script, as it omits the Bollinger Band requirement unless the purple dot condition is met.
Bollinger Band Bonus: The purple dot incorporates the Bollinger Band proximity check (bbNear), matching the ChatGPT script’s additional filter, ensuring purple dots appear when the price is near the lower Bollinger Band.
Flexible ATH Detection: Using recentHigh >= allTimeHigh * 0.99 makes the ATH condition less strict, increasing the likelihood of signals compared to my original script.
How to UseAdd to TradingView:Open the Pine Editor in TradingView.
Copy and paste the script.
Click "Add to Chart" to apply it.
Interpret Dots:Blue Dot: Indicates a stock near an ATH, in a pullback (above 10-period SMA), with a Stochastic crossover above 20. This is the core Dr. Wish setup.
Purple Dot: Same as blue dot but with the price also within 2% of the lower Bollinger Band, suggesting a stronger pullback signal.
Test and Compare:Apply the script to the same stock and timeframe where the ChatGPT script showed blue dots (e.g., NVDA or TSLA on a daily chart).
Check if blue dots appear at similar points and if purple dots appear when the price is near the lower Bollinger Band.
Adjust lookbackATH (e.g., 60 to 100) or bbProximity (e.g., 1.02 to 1.05) if signals are too rare or frequent.
Set Alerts:Use TradingView’s alert feature to create notifications for “Blue Dot Alert” or “Purple Dot Alert” when signals occur.
TroubleshootingIf you’re still not seeing blue or purple dots:Check the Chart: Ensure the stock has recently hit an ATH and pulled back. Test on volatile stocks like NVDA, TSLA, or AAPL on daily or weekly timeframes.
Timeframe Sensitivity: The script may produce fewer signals on lower timeframes (e.g., 1-hour) due to fewer ATH occurrences. Try a daily or weekly chart.
Parameter Tuning: Increase bbProximity (e.g., to 1.05) to allow purple dots for prices slightly further from the lower Bollinger Band, or increase lookbackATH to capture more ATHs.
Compare with ChatGPT Script: Run both scripts on the same chart to identify where signals differ. Share the ticker, timeframe, or a screenshot if you need help debugging specific cases.
Additional NotesThe 10-period SMA in the pullback condition (isPullback) is a simple bullish context filter. You can replace it with another condition (e.g., 20-period SMA or trend filter) if preferred.
The Bollinger Band parameters (bbLength=20, bbMult=2.0) are standard but can be adjusted to match your trading style.
The script uses a 5000-bar lookback for allTimeHigh to approximate a true ATH. If your chart has limited historical data, reduce this value (e.g., to 1000).
Cryptocurrency trend following EMA Ribbon LONG only studyThis strategy is based on EMA Ribbon and uses multiple indicators to find optimal time to enter/exit the trade and filter out false signals. The script with default setting is developed mainly for trading altcoins/stable coin pair such as ADA(USDT etc on 4h timeframe but it can be applied to any pair/any timeframe with some settings adjustments.
For plot on chart features make sure that you have both study and strategy scripts on chart with same settings.
Strategy settings description:
1. Signal EMA Length - Value for exponencial moving average (slowest from EMA Ribbon)
1a. Buy price toleration (%) - Price deviation for filtering bounces of EMA - price must close defined percents above EMA to open long trade
1b. Sell price toleration (%) - Price deviation for filtering bounces of EMA - price must close defined percents bellow EMA to close long trade
1c. EMA deelay - EMA id delayed by defined bars for smoothening
2. Filter by Fast EMA - Strategy filters signals to prevent buy while coin is dropping
2a. Fast EMA Length - Value for fast exponencial moving average
3. Filter by SMA - Strategy filters signals to confirm trend change
3a. SMA Length - Value for simple moving average
4. Filter by RSI - Strategy filters signals to prevent buing/selling overbought/oversold coins
4a. RSI Length - Length of RSI identificator
4b. RSI Source candle - What price of candle is used for RSI calculation (open, close, high, low)
4c. RSI Long condition - When buy, RSI indicator must be below this value to prevent of buying already overbought coin
4d. RSI Short condition - When sell, RSI indicator must be above this value to prevent of selling already oversold coin
5. RSI Close Trade Condition - Strategy sell coin once RSI reach defined value
5a. RSI close trade condition - Sell once RSI indicator acquires defined value
6. Close trade by Take Profit or Stop Loss Condition (STRATEGY ONLY) - Strategy sell coin once defined take profit / stoploss level is reached
6a. Take Profit (%) - Take profit value in percent
6b. Stop Loss (%) - Stop loss value in percent
6c. Plot targets on chart - defined targets will be plotted as lines on chart
7. Date range from
7a From Year - To run strategy in interval
7b From Month - To run strategy in interval
7c From Day - To run strategy in interval
8. Date range to
8a To Year - To run strategy in interval
8b To Month - To run strategy in interval
8c To Day - To run strategy in interval
9. Wait to confirm the signal
9a Wait candless to buy - strategy will wait defined candless to confirm the signal before buy
9b Wait candless to sell - strategy will wait defined candless to confirm the signal before sell
10. Plotting on chart (STUDY ONLY)
10a Plot signal line channel with bows on chart
10b Plot simple moving average on chart
10c Plot EMA Ribbon on chart
10d Plot recent support and resistance levels on chart
11. Show Every signal (STUDY ONLY) - Unchecked shows only first signal based on strategy. But if you use take profit/stoploss settings within your bot, you might want to rebuy on next signal. Checked shows signal on each candle.
Throw on chart also buld-in RSI indicator and set the same as strategy
Notice that there might be false signals, especially when the coin is not trending or is strongly manipulated. Overall strategy is profitable though. You just take some minor loses and wont miss the big move.
You may also consider to compare buy&hold return vs profit from trading this strategy. In downtrend as we have seen recently, profit may not be as high as you expect but it is still much better than just hold and hope.
You can use the strategy script for fine tunning settings and find best settings for yourself.
Study script helps you to automate trading with use of alerts perharps with 3commas bot or even trade manually based on email/sms notification setted by tradingview
Notice that study script does not handle takeprofit/stoploss order. That is why sell arrows could be plotted by study script later than strategy script. To rebuy after takeprofit/stop-loss use "11. Show Every signal (STUDY ONLY)" setting
Make sure that you keep same settings for strategy and study scripts.
If you need any help with settings do not hesitate to ask. I would also appriciate any feedback and ideas how to improve this script.
Here is backtest result from 1. Nov 2018 using constant 100USD Buy ammount:
Cryptocurrency trend following EMA Ribbon LONG only strategyThis strategy is based on EMA Ribbon and uses multiple indicators to find optimal time to enter/exit the trade and filter out false signals. The script with default setting is developed mainly for trading altcoins/stable coin pair such as ADA/USDT etc on 4h timeframe but it can be applied to any pair/any timeframe with some settings adjustments.
For plot on chart features make sure that you have both study and strategy scripts on chart with same settings.
Strategy settings description:
1. Signal EMA Length - Value for exponencial moving average (slowest from EMA Ribbon)
1a. Buy price toleration (%) - Price deviation for filtering bounces of EMA - price must close defined percents above EMA to open long trade
1b. Sell price toleration (%) - Price deviation for filtering bounces of EMA - price must close defined percents bellow EMA to close long trade
1c. EMA deelay - EMA id delayed by defined bars for smoothening
2. Filter by Fast EMA - Strategy filters signals to prevent buy while coin is dropping
2a. Fast EMA Length - Value for fast exponencial moving average
3. Filter by SMA - Strategy filters signals to confirm trend change
3a. SMA Length - Value for simple moving average
4. Filter by RSI - Strategy filters signals to prevent buing/selling overbought/oversold coins
4a. RSI Length - Length of RSI identificator
4b. RSI Source candle - What price of candle is used for RSI calculation (open, close, high, low)
4c. RSI Long condition - When buy, RSI indicator must be below this value to prevent of buying already overbought coin
4d. RSI Short condition - When sell, RSI indicator must be above this value to prevent of selling already oversold coin
5. RSI Close Trade Condition - Strategy sell coin once RSI reach defined value
5a. RSI close trade condition - Sell once RSI indicator acquires defined value
6. Close trade by Take Profit or Stop Loss Condition (STRATEGY ONLY) - Strategy sell coin once defined take profit / stoploss level is reached
6a. Take Profit (%) - Take profit value in percent
6b. Stop Loss (%) - Stop loss value in percent
6c. Plot targets on chart - defined targets will be plotted as lines on chart
7. Date range from
7a From Year - To run strategy in interval
7b From Month - To run strategy in interval
7c From Day - To run strategy in interval
8. Date range to
8a To Year - To run strategy in interval
8b To Month - To run strategy in interval
8c To Day - To run strategy in interval
9. Wait to confirm the signal
9a Wait candless to buy - strategy will wait defined candless to confirm the signal before buy
9b Wait candless to sell - strategy will wait defined candless to confirm the signal before sell
10. Plotting on chart (STUDY ONLY)
10a Plot signal line channel with bows on chart
10b Plot simple moving average on chart
10c Plot EMA Ribbon on chart
10d Plot recent support and resistance levels on chart
11. Show Every signal (STUDY ONLY) - Unchecked shows only first signal based on strategy. But if you use take profit/stoploss settings within your bot, you might want to rebuy on next signal. Checked shows signal on each candle.
Throw on chart also buld-in RSI indicator and set the same as strategy
Notice that there might be false signals, especially when the coin is not trending or is strongly manipulated. Overall strategy is profitable though. You just take some minor loses and wont miss the big move.
You may also consider to compare buy&hold return vs profit from trading this strategy. In downtrend as we have seen recently, profit may not be as high as you expect but it is still much better than just hold and hope.
You can use the strategy script for fine tunning settings and find best settings for yourself.
Study script helps you to automate trading with use of alerts perharps with 3commas bot or even trade manually based on email/sms notification setted by tradingview
Notice that study script does not handle takeprofit/stoploss order. That is why sell arrows could be plotted by study script later than strategy script. To rebuy after takeprofit/stop-loss use "11. Show Every signal (STUDY ONLY)" setting
Make sure that you keep same settings for strategy and study scripts.
If you need any help with settings do not hesitate to ask. I would also appriciate any feedback and ideas how to improve this script.
Here is backtest result from 1. Nov 2018 using constant 100USD Buy ammount:
Waindrops [Makit0]█ OVERALL
Plot waindrops (custom volume profiles) on user defined periods, for each period you get high and low, it slices each period in half to get independent vwap, volume profile and the volume traded per price at each half.
It works on intraday charts only, up to 720m (12H). It can plot balanced or unbalanced waindrops, and volume profiles up to 24H sessions.
As example you can setup unbalanced periods to get independent volume profiles for the overnight and cash sessions on the futures market, or 24H periods to get the full session volume profile of EURUSD
The purpose of this indicator is twofold:
1 — from a Chartist point of view, to have an indicator which displays the volume in a more readable way
2 — from a Pine Coder point of view, to have an example of use for two very powerful tools on Pine Script:
• the recently updated drawing limit to 500 (from 50)
• the recently ability to use drawings arrays (lines and labels)
If you are new to Pine Script and you are learning how to code, I hope you read all the code and comments on this indicator, all is designed for you,
the variables and functions names, the sometimes too big explanations, the overall structure of the code, all is intended as an example on how to code
in Pine Script a specific indicator from a very good specification in form of white paper
If you wanna learn Pine Script form scratch just start HERE
In case you have any kind of problem with Pine Script please use some of the awesome resources at our disposal: USRMAN , REFMAN , AWESOMENESS , MAGIC
█ FEATURES
Waindrops are a different way of seeing the volume and price plotted in a chart, its a volume profile indicator where you can see the volume of each price level
plotted as a vertical histogram for each half of a custom period. By default the period is 60 so it plots an independent volume profile each 30m
You can think of each waindrop as an user defined candlestick or bar with four key values:
• high of the period
• low of the period
• left vwap (volume weighted average price of the first half period)
• right vwap (volume weighted average price of the second half period)
The waindrop can have 3 different colors (configurable by the user):
• GREEN: when the right vwap is higher than the left vwap (bullish sentiment )
• RED: when the right vwap is lower than the left vwap (bearish sentiment )
• BLUE: when the right vwap is equal than the left vwap ( neutral sentiment )
KEY FEATURES
• Help menu
• Custom periods
• Central bars
• Left/Right VWAPs
• Custom central bars and vwaps: color and pixels
• Highly configurable volume histogram: execution window, ticks, pixels, color, update frequency and fine tuning the neutral meaning
• Volume labels with custom size and color
• Tracking price dot to be able to see the current price when you hide your default candlesticks or bars
█ SETTINGS
Click here or set any impar period to see the HELP INFO : show the HELP INFO, if it is activated the indicator will not plot
PERIOD SIZE (max 2880 min) : waindrop size in minutes, default 60, max 2880 to allow the first half of a 48H period as a full session volume profile
BARS : show the central and vwap bars, default true
Central bars : show the central bars, default true
VWAP bars : show the left and right vwap bars, default true
Bars pixels : width of the bars in pixels, default 2
Bars color mode : bars color behavior
• BARS : gets the color from the 'Bars color' option on the settings panel
• HISTOGRAM : gets the color from the Bearish/Bullish/Neutral Histogram color options from the settings panel
Bars color : color for the central and vwap bars, default white
HISTOGRAM show the volume histogram, default true
Execution window (x24H) : last 24H periods where the volume funcionality will be plotted, default 5
Ticks per bar (max 50) : width in ticks of each histogram bar, default 2
Updates per period : number of times the histogram will update
• ONE : update at the last bar of the period
• TWO : update at the last bar of each half period
• FOUR : slice the period in 4 quarters and updates at the last bar of each of them
• EACH BAR : updates at the close of each bar
Pixels per bar : width in pixels of each histogram bar, default 4
Neutral Treshold (ticks) : delta in ticks between left and right vwaps to identify a waindrop as neutral, default 0
Bearish Histogram color : histogram color when right vwap is lower than left vwap, default red
Bullish Histogram color : histogram color when right vwap is higher than left vwap, default green
Neutral Histogram color : histogram color when the delta between right and left vwaps is equal or lower than the Neutral treshold, default blue
VOLUME LABELS : show volume labels
Volume labels color : color for the volume labels, default white
Volume Labels size : text size for the volume labels, choose between AUTO, TINY, SMALL, NORMAL or LARGE, default TINY
TRACK PRICE : show a yellow ball tracking the last price, default true
█ LIMITS
This indicator only works on intraday charts (minutes only) up to 12H (720m), the lower chart timeframe you can use is 1m
This indicator needs price, time and volume to work, it will not work on an index (there is no volume), the execution will not be allowed
The histogram (volume profile) can be plotted on 24H sessions as limit but you can plot several 24H sessions
█ ERRORS AND PERFORMANCE
Depending on the choosed settings, the script performance will be highly affected and it will experience errors
Two of the more common errors it can throw are:
• Calculation takes too long to execute
• Loop takes too long
The indicator performance is highly related to the underlying volatility (tick wise), the script takes each candlestick or bar and for each tick in it stores the price and volume, if the ticker in your chart has thousands and thousands of ticks per bar the indicator will throw an error for sure, it can not calculate in time such amount of ticks.
What all of that means? Simply put, this will throw error on the BITCOIN pair BTCUSD (high volatility with tick size 0.01) because it has too many ticks per bar, but lucky you it will work just fine on the futures contract BTC1! (tick size 5) because it has a lot less ticks per bar
There are some options you can fine tune to boost the script performance, the more demanding option in terms of resources consumption is Updates per period , by default is maxed out so lowering this setting will improve the performance in a high way.
If you wanna know more about how to improve the script performance, read the HELP INFO accessible from the settings panel
█ HOW-TO SETUP
The basic parameters to adjust are Period size , Ticks per bar and Pixels per bar
• Period size is the main setting, defines the waindrop size, to get a better looking histogram set bigger period and smaller chart timeframe
• Ticks per bar is the tricky one, adjust it differently for each underlying (ticker) volatility wise, for some you will need a low value, for others a high one.
To get a more accurate histogram set it as lower as you can (min value is 1)
• Pixels per bar allows you to adjust the width of each histogram bar, with it you can adjust the blank space between them or allow overlaping
You must play with these three parameters until you obtain the desired histogram: smoother, sharper, etc...
These are some of the different kind of charts you can setup thru the settings:
• Balanced Waindrops (default): charts with waindrops where the two halfs are of same size.
This is the default chart, just select a period (30m, 60m, 120m, 240m, pick your poison), adjust the histogram ticks and pixels and watch
• Unbalanced Waindrops: chart with waindrops where the two halfs are of different sizes.
Do you trade futures and want to plot a waindrop with the first half for the overnight session and the second half for the cash session? you got it;
just adjust the period to 1860 for any CME ticker (like ES1! for example) adjust the histogram ticks and pixels and watch
• Full Session Volume Profile: chart with waindrops where only the first half plots.
Do you use Volume profile to analize the market? Lucky you, now you can trick this one to plot it, just try a period of 780 on SPY, 2760 on ES1!, or 2880 on EURUSD
remember to adjust the histogram ticks and pixels for each underlying
• Only Bars: charts with only central and vwap bars plotted, simply deactivate the histogram and volume labels
• Only Histogram: charts with only the histogram plotted (volume profile charts), simply deactivate the bars and volume labels
• Only Volume: charts with only the raw volume numbers plotted, simply deactivate the bars and histogram
If you wanna know more about custom full session periods for different asset classes, read the HELP INFO accessible from the settings panel
EXAMPLES
Full Session Volume Profile on MES 5m chart:
Full Session Unbalanced Waindrop on MNQ 2m chart (left side Overnight session, right side Cash Session):
The following examples will have the exact same charts but on four different tickers representing a futures contract, a forex pair, an etf and a stock.
We are doing this to be able to see the different parameters we need for plotting the same kind of chart on different assets
The chart composition is as follows:
• Left side: Volume Labels chart (period 10)
• Upper Right side: Waindrops (period 60)
• Lower Right side: Full Session Volume Profile
The first example will specify the main parameters, the rest of the charts will have only the differences
MES :
• Left: Period size: 10, Bars: uncheck, Histogram: uncheck, Execution window: 1, Ticks per bar: 2, Updates per period: EACH BAR,
Pixels per bar: 4, Volume labels: check, Track price: check
• Upper Right: Period size: 60, Bars: check, Bars color mode: HISTOGRAM, Histogram: check, Execution window: 2, Ticks per bar: 2,
Updates per period: EACH BAR, Pixels per bar: 4, Volume labels: uncheck, Track price: check
• Lower Right: Period size: 2760, Bars: uncheck, Histogram: check, Execution window: 1, Ticks per bar: 1, Updates per period: EACH BAR,
Pixels per bar: 2, Volume labels: uncheck, Track price: check
EURUSD :
• Upper Right: Ticks per bar: 10
• Lower Right: Period size: 2880, Ticks per bar: 1, Pixels per bar: 1
SPY :
• Left: Ticks per bar: 3
• Upper Right: Ticks per bar: 5, Pixels per bar: 3
• Lower Right: Period size: 780, Ticks per bar: 2, Pixels per bar: 2
AAPL :
• Left: Ticks per bar: 2
• Upper Right: Ticks per bar: 6, Pixels per bar: 3
• Lower Right: Period size: 780, Ticks per bar: 1, Pixels per bar: 2
█ THANKS TO
PineCoders for all they do, all the tools and help they provide and their involvement in making a better community
scarf for the idea of coding a waindrops like indicator, I did not know something like that existed at all
All the Pine Coders, Pine Pros and Pine Wizards, people who share their work and knowledge for the sake of it and helping others, I'm very grateful indeed
I'm learning at each step of the way from you all, thanks for this awesome community;
Opensource and shared knowledge: this is the way! (said with canned voice from inside my helmet :D)
█ NOTE
This description was formatted following THIS guidelines
═════════════════════════════════════════════════════════════════════════
I sincerely hope you enjoy reading and using this work as much as I enjoyed developing it :D
GOOD LUCK AND HAPPY TRADING!
TradeChartist Tantalizer Pro™TradeChartist Tantalizer Pro is an extensive set of trading Indicators, Signal generators and Utilities all packed into 1 script. The script's visually appealing design and its functionality offers a pleasing experience for the users, thereby complementing their analysis and helps understand asset's price action better.
What does ™TradeChartist Tantalizer Pro do?
1. MA Tantalizer plots Moving Averages Tantalizer (Fishnet or Tantalized) based on user selection from a dropdown of 10 MAs (SMA, EMA, Zero-Lag EMA, SMMA, WMA, DEMA, TEMA, VIDYA (Variable Index DYnamic Average), T3 MA (developed by Tim Tillson featured in his article "Better Moving Averages" in 1998), Modified T3 MA). If length input is 10, Tantalizer plots 20 MA plots ranging from 10 MA to 200 MA. The Tantalized MAs help the traders to visually spot price trends and along with other indicators within the script, helps make an informed trade decision. 20 MA plots can be individually plotted or hidden from the indicator settings.
2. Plots two MAs based on user input length and timeframe which helps detect MA crosses as shown below.
3. Generates Intensity framework based Signals with recommended Stop Loss (trails with Equilibrium Line) along with Intensity Bands plot. (disables MA Tantalizer)
4. Plots Intensity candles to help spot trend and trend changes.
5. Generates TradeChartist's Rubicon framework based signals with recommended Stop Loss (trails and reverses trade when closes below or above, based on trade direction) along with Rubicon Environment plot.
6. Offers RSI color candles, Automatic Levels Generator in the toolkit to help traders visually spot RSI changes and Support/Resistance levels on chart. RSI Color Candles is a very helpful tool especially in spotting price trends on Heikin Ashi charts.
The sheer number of interesting things that can be done with this script from plotting visually engaging MA Tantalizer, detecting MA crosses not just on chart Timeframe, but also crosses between MAs of different timeframes, switching between Rubicon and Intensity environments, switching between RSI and Intensity color candles to plotting Support/Resistance levels using Automatic Levels Generator, makes this script quite versatile and a real Tantalizer.
This is not a free to use indicator. Get in touch with me (PM me directly if you would like trial access to the indicator before deciding to take lifetime access to this script)
Premium Scripts - Trial access and Information
Trial access offered on all Premium scripts.
PM me directly to request trial access to the scripts or for more information.
Weis zigzag delta Jayy Dec 09 19This is an update of my Weis Wave script. The script is protected however you do not need permission to use the script. There are additions to this script from the one posted here: Please read the notes associated with that script as well as the videos.
Watch the following video to familiarize yourself with the use of both Weis scripts:
Jayy
Event Contract Signal Predictor [10-min Chart]Description:
This script is designed for high-probability event contract trading on 10-minute charts. It combines proprietary LSMA wave trend analysis with custom high-pass filtering and dynamic volume-based order book detection to generate precise long and short entry signals.
Key Features:
• LSMA Wave Trend: Captures short-term momentum with a custom linear regression over smoothed RSI values.
• High-Pass Filter & Peak Detection: Reduces noise and identifies extreme price movements for precise timing.
• Dynamic Order Book Ratio: Monitors buy/sell volume imbalance in real-time to confirm trade validity.
• Signal Confluence: Long or short signals appear only when multiple conditions align (trend, momentum, volume), reducing false triggers.
• Immediate Signal Display: Signals appear on the first candle after condition confirmation; no need to wait for candle close.
• Adjustable Parameters: Users can customize resonance thresholds, smoothing periods, and trigger sensitivity for different markets.
How to Use:
1. Apply the script to a 10-minute chart.
2. Observe green circles (long) and red circles (short) marking potential entries.
3. Combine with your risk management strategy for optimal results.
Note:
This script is closed-source to protect proprietary logic. While the exact calculations are not revealed, this description provides enough context for traders to understand how signals are generated and applied.
COMET_Scanner_Library_FINALLibrary "COMET_Scanner_Library"
- A Trader's Edge (ATE)_Library was created to assist in constructing COM Scanners
TickerIDs(_string)
TickerIDs: You must form this single tickerID input string exactly as described in the scripts info panel (little gray 'i' that
is circled at the end of the settings in the settings/input panel that you can hover your cursor over this 'i' to read the
details of that particular input). IF the string is formed correctly then it will break up this single string parameter into
a total of 40 separate strings which will be all of the tickerIDs that the script is using in your COM Scanner.
Parameters:
_string (simple string) : (string)
A maximum of 40 Tickers (ALL joined as 1 string for the input parameter) that is formulated EXACTLY as described
within the tooltips of the TickerID inputs in my COM Scanner scripts:
assets = input.text_area(tIDs, title="TickerIDs (MUST READ TOOLTIP)", group=g2, tooltip="Accepts 40 TICKERID's
for each copy of the script on the chart. \n\n*** MUST FORMAT THIS WAY ***\n\n Each FULL tickerID
(ie 'Exchange:ticker') must be separated by A SINGLE BLANK SPACE for correct formatting. The blank space tells
the script where to break off the ticker to assign it to a variable to be used later in the script. So this input
will be a single string constructed from up to 40 tickerID's with a space between each tickerID
(ie. 'BINANCE:BTCUSDT BINANCE:SXPUSDT BINANCE:XRPUSDT').", display=display.none)
Returns: Returns 40 output variables in the tuple (ie. between the ' ') with the separated TickerIDs,
Locations(_firstLocation)
Locations: This function is used when there's a desire to print an assets ALERT LABELS. A set Location on the scale is assigned to each asset.
This is created so that if a lot of alerts are triggered, they will stay relatively visible and not overlap each other.
If you set your '_firstLocation' parameter as 1, since there are a max of 40 assets that can be scanned, the 1st asset's location
is assigned the value in the '_firstLocation' parameter, the 2nd asset's location is the (1st asset's location+1)...and so on.
Parameters:
_firstLocation (simple int) : (simple int)
Optional (starts at 1 if no parameter added).
Location that you want the first asset to print its label if is triggered to do so.
ie. loc2=loc1+1, loc3=loc2+1, etc.
Returns: Returns 40 variables for the locations for alert labels
LabelSize(_barCnt, _lblSzRfrnce)
INVALID TICKERIDs: This is to add a table in the middle right of your chart that prints all the TickerID's that were either not formulated
correctly in the '_source' input or that is not a valid symbol and should be changed.
LABEL SIZES: This function sizes your Alert Trigger Labels according to the amount of Printed Bars the chart has printed within
a set time period, while also keeping in mind the smallest relative reference size you input in the 'lblSzRfrnceInput'
parameter of this function. A HIGHER % of Printed Bars(aka...more trades occurring for that asset on the exchange),
the LARGER the Name Label will print, potentially showing you the better opportunities on the exchange to avoid
exchange manipulation liquidations.
*** SHOULD NOT be used as size of labels that are your asset Name Labels next to each asset's Line Plot...
if your COM Scanner includes these as you want these to be the same size for every asset so the larger ones dont cover the
smaller ones if the plots are all close to each other ***
Parameters:
_barCnt (float) : (float)
Get the 1st variable('barCnt') from the Security function's tuple and input it as this functions 1st input
parameter which will directly affect the size of the 2nd output variable ('alertTrigLabel') that is also outputted by this function.
_lblSzRfrnce (string) : (string)
Optional (if parameter not included, it defaults to size.small). This will be the size of the variable outputted
by this function named 'assetNameLabel' BUT also affects the size of the output variable 'alertTrigLabel' as it uses this parameter's size
as the smallest size for 'alertTrigLabel' then uses the '_barCnt' parameter to determine the next sizes up depending on the "_barCnt" value.
Returns: ( )
Returns 2 variables:
1st output variable ('AssetNameLabel') is assigned to the size of the 'lblSzRfrnceInput' parameter.
2nd output variable('alertTrigLabel') can be of variying sizes depending on the 'barCnt' parameter...BUT the smallest
size possible for the 2nd output variable ('alertTrigLabel') will be the size set in the 'lblSzRfrnceInput' parameter.
InvalidTickerIDs(_close, _securityTickerid, _invalidArray, _tablePosition, _stackVertical)
Parameters:
_close (float)
_securityTickerid (string)
_invalidArray (array)
_tablePosition (simple string)
_stackVertical (simple bool)
PrintedBarCount(_time, _barCntLength, _barCntPercentMin)
The Printed BarCount Filter looks back a User Defined amount of minutes and calculates the % of bars that have printed
out of the TOTAL amount of bars that COULD HAVE been printed within the same amount of time.
Parameters:
_time (int) : (int)
The time associated with the chart of the particular asset that is being screened at that point.
_barCntLength (int) : (int)
The amount of time (IN MINUTES) that you want the logic to look back at to calculate the % of bars that have actually
printed in the span of time you input into this parameter.
_barCntPercentMin (int) : (int)
The minimum % of Printed Bars of the asset being screened has to be GREATER than the value set in this parameter
for the output variable 'bc_gtg' to be true.
Returns: ( )
Returns 2 outputs:
1st is the % of Printed Bars that have printed within the within the span of time you input in the '_barCntLength' parameter.
2nd is true/false according to if the Printed BarCount % is above the threshold that you input into the '_barCntPercentMin' parameter.